sum[i]是1-i所有1的和,而i-sum[a[i]]就是在a[i]后面的数,即在i之前出现,却比他大的数。1是加在a[i]上,即i实际应该放的位置。而c[i]是为sum做准备的

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4 #include<iostream>
 5 #include<stdlib.h>
 6 #include<algorithm>
 7 #include<queue>
 8 #include<vector>
 9 #include<string>
10 #include<set>
11 #include<cctype>
12 #include<sstream>
13 #define mem(a) memset(a,0,sizeof(a))
14 #define LL long long
15 using namespace std;
16 const int N=1e6+5;
17 int a[N],c[N],n;
18 int lowbit(int x)
19 {
20     return x&-x;
21 }
22 void add(int x,int a)
23 {
24     while(x<=n) c[x]+=a,x+=lowbit(x);
25 }
26 int sum(int x)
27 {
28     int ans=0;
29     while(x)
30     {
31         ans+=c[x];
32         x-=lowbit(x);
33     }
34     return ans;
35 }
36 int main()
37 {
38     while(~scanf("%d",&n))
39     {
40         mem(c);
41         int ans=0;
42         for(int i=1;i<=n;i++)
43         {
44            scanf("%d",&a[i]);
45            add(a[i],1);
46            ans+=i-sum(a[i]);
47         }
48         printf("%d\n",ans);
49     }
50     return 0;
51 }

View Code

转载于:https://www.cnblogs.com/XXrll/p/10305404.html

sort it 树状数组+逆序对相关推荐

  1. Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 1539  Solved: 665 [Submit][Status][ ...

  2. CodeForces - 987E Petr and Permutations(树状数组+逆序对定理)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列,可能打乱过 3 * n 次,也可能打乱过 7 * n + 1 次,问到底打乱过多少次 题目分析:首先看出,3 * n 和 7 * n + 1 ...

  3. 牛客 - tokitsukaze and Inverse Number(树状数组+逆序对定理)

    题目链接:点击查看 题目大意:给出一个长度为 n 的排列 a,需要执行 q 次操作,每次操作会将区间 [ l , r ] 内的数循环右移 k 次,现在需要回答每次操作后排列的逆序对数,只需要回答奇偶即 ...

  4. cf1042d 树状数组逆序对+离散化

    /* 给定一个数组,要求和小于t的段落总数 求前缀和 dp[i]表示以第i个数为结尾的小于t的段落总数,sum[i]-sum[l]<t; sum[i]-t<sum[l],所以只要找到满足条 ...

  5. HDU5196--DZY Loves Inversions 树状数组 逆序数

    题意查询给定[L, R]区间内 逆序对数 ==k的子区间的个数. 我们只需要求出 子区间小于等于k的个数和小于等于k-1的个数,然后相减就得出答案了. 对于i(1≤i≤n),我们计算ri表示[i,ri ...

  6. POJ-3067 Japan---树状数组逆序对变形

    题目链接: https://vjudge.net/problem/POJ-3067 题目大意: 日本岛东海岸与西海岸分别有N和M个城市,现在修高速公路连接东西海岸的城市,求交点个数. 解题思路: 记每 ...

  7. HDU - 5775 - Bubble Sort( 树状数组 + 思维 )

    题目链接:点击进入 题目 题意 问在给出的冒泡排序过程中,一个数到达的最右边位置与最左边位置距离差. 思路 对于一个数,位置 i ,假设右边比它小的数有 r 个,左边比它大的数有 l 个,最右边到达的 ...

  8. dp 树状数组 逆序元组

    wmq的队伍 发布时间: 2017年4月9日 17:06   最后更新: 2017年4月9日 17:07   时间限制: 2000ms   内存限制: 512M 描述 交大上课需要打卡,于是在上课前的 ...

  9. AtCoder Regular Contest 088 E - Papple Sort(树状数组+结论)

    结论:每次把字符丢到最外面最优,用树状数组统计答案,把字符放到最外边后可以当成消失了,直接在树状数组上删掉就好. 感性理解是把字符丢到中间会增加其他字符的移动次数,但是丢到外面不会,所以是正确的. # ...

最新文章

  1. Beyond Compare 4比较文件夹要设置基键吗?
  2. 图像处理和计算机视觉中的经典论文(部分)
  3. 简单介绍:什么是Python?Python好学吗?
  4. redis集群报Jedis does not support password protected Redis Cluster configurations异常解决办法...
  5. IP包的生成和发送接口(1)
  6. php codeigniter cookie,PHP 使用CodeIgniter删除、设置Cookie的简单示例
  7. update mysql.user set password_使用update命令来修改Mysql的root密码
  8. Memory Cleaner for Mac(内存清理工具)最新版
  9. mysql master slave模式,mysql复制(Replication)模式 主从(Master Slave)模式
  10. 学科分类号查询 计算机工程,学科分类与代码分类号查询.doc
  11. java统计汉字个数_java统计汉字字数的方法示例
  12. 惠普z800工作站bios设置_HP工作站 BIOS说明 适用Z228 Z440 Z230 Z640 Z840 Z800 Z620 Z420 Z820主板设置 -...
  13. 10个SQL注入工具
  14. 排序算法和查找算法的英文名
  15. 最新解决百度网盘不限速方法
  16. Java Test Fore
  17. 实验三 基于A*算法的迷宫游戏
  18. 华为自带浏览器无法使用
  19. java获取分贝_android 声音强度、分贝 大小检测 源码下载(as版)
  20. PLM与ERP集成,这个头疼的问题,可以这样解决!

热门文章

  1. python安装email模块,python 3.4.0电子邮件包安装:ImportError:没有名为'cStringIO'的模块...
  2. 2021年黑龙江高考成绩查询,黑龙江省招生考试信息港:2021年黑龙江高考成绩查询入口、查分系统...
  3. nginx中root和alias的区别
  4. springBoot项目启动去掉多余的启动日志
  5. window打开IIS
  6. redis的持久化之RDB的配置和原理
  7. ORACLE查看某个表的索引状态
  8. ORACLE表空间使用量查询SQL
  9. Android开发笔记(二十三)文件对话框FileDialog
  10. html里meta标签,HTML中的meta标签详解