看着题意:[1,i]中等于a[i]的个数要大于[,jn]中等于a[j]的个数 且i<j,求有多少对这种(i,j)  ,i<j可是 i前面的合法个数 要大于j后面的 看起来非常像逆序数的样子,所以非常easy往树状数组想去,可是处理就看个人了,像我比赛的时候就处理得非常的麻烦,虽做出了可是花时间也多,经过杰哥的教育,事实上正着塞进树状数组 反着来找就能够了,灰常的简单清晰明了,贴一发纪念我的搓比...

int n;

int aa[1000000 + 55];
int bb[1000000 + 55]; int c[1000000 + 55]; map<int ,int > mp; ll lowbit(ll x) {
return x&(-x);
} void add(int i,int val) {
while(i <= n) {
c[i] += val;
i += lowbit(i);
}
} ll get_sum(int i) {
ll sum = 0;
while(i) {
sum += c[i];
i -= lowbit(i);
}
return sum;
} void init() {
memset(c,0,sizeof(c));
memset(aa,0,sizeof(aa));
memset(bb,0,sizeof(bb));
mp.clear();
} int main() {
while(scanf("%d",&n) == 1) {
init();
for(int i=1;i<=n;i++)scanf("%d",&aa[i]);
for(int i=1;i<=n;i++) {
mp[aa[i]]++;
bb[i] = mp[aa[i]];
add(bb[i],1);
}
mp.clear();
ll ans = 0ll;
for(int i=n;i>=1;i--) {
add(bb[i],-1);
mp[aa[i]]++;
int tmp = mp[aa[i]];
ans += i - get_sum(tmp) - 1;
}
cout<<ans<<endl;
}
return 0;
}

最新文章

  1. ABP理论学习之内嵌资源文件
  2. 类Arrays
  3. sky简介
  4. 【BZOJ 4269】再见Xor
  5. Java递归算法——变位字
  6. 信息安全系统设计基础实验一 20135211&amp;20135216
  7. Tomcate配置单向双向SSL
  8. 【leetcode❤python】13. Roman to Integer
  9. 【KVM安装】在Centos6.8中安装KVM
  10. 【html】页面制作规范文档
  11. system strategies of Resources Deadlock
  12. Extjs grid 组件
  13. Mahout系列之----kmeans 聚类
  14. 微信小程序开发----微信开发者工具使用
  15. 【Linux】Centos partition
  16. Java基础5-接口
  17. javascript:window.location.replace 与 window.location.reload() 刷新页面的不同效果
  18. django 数据模型中 null=True 和 blank=True 有什么区别
  19. 20145127《java程序设计》第九周学习总结
  20. 【教程】【FLEX】#004 反射机制

热门文章

  1. bzoj题解
  2. BZOJ2870: 最长道路tree
  3. 基于WebForm+EasyUI的业务管理系统形成之旅 -- ParamQueryGrid行、列合并(Ⅸ)
  4. POJ 2352 Stars
  5. web.xml 配置的详解
  6. 发送一个简单的HTTP GET请求并且取回响应。
  7. Web API-如何将Controller的返回值转换成HTTP response消息
  8. Leetcode OJ : Restore IP Addresses backtrack暴搜 C++ solution
  9. uvalive 3135 Argus priority_queue
  10. 50道经典的JAVA编程题(31-35)