博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板——树状数组求逆序对
阅读量:5127 次
发布时间:2019-06-13

本文共 1420 字,大约阅读时间需要 4 分钟。

题目链接:

1 #include  2 #include 
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #define forn(i, n) for (int i = 0; i < (n); i++)11 #define forab(i, a, b) for (int i = (a); i <= (b); i++)12 #define forba(i, b, a) for (int i = (b); i >= (a); i--)13 #define mset(a, n) memset(a, n, sizeof(a))14 #define fast ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)15 #define P pair
16 #define fi first17 #define se second18 using namespace std;19 #define N 50000520 #define maxn 100521 #define inf 0x3f3f3f3f22 #define ll long long23 ll a[N], c[N * 4];24 ll b[N];25 int n;26 int sum;27 inline int lowbit(int x) { return x & (-x); }28 void add(int x,int y)29 {30 for (; x <= N;x+=lowbit(x))31 c[x] += y;32 }33 int ask(int x)34 {35 int ans = 0;36 for (; x;x-=lowbit(x))37 ans += c[x];38 return ans;39 }40 bool cmp(int x,int y)41 {42 return b[x] > b[y];43 }44 int main()45 {46 scanf("%d", &n);47 forab(i, 1, n)48 {49 scanf("%d", b + i);50 a[i] = i;51 }52 sort(a + 1, a + 1 + n, cmp);53 // forab(i, 1, n) cout << a[i] << " ";54 // cout << endl;55 forab(i, 1, n)56 {57 58 // cout << "sum=" << sum << endl;59 add(a[i], 1);60 sum += ask(a[i] - 1);61 }62 cout << sum << endl;63 system("pause");64 }65 /*66 667 5 4 2 6 3 168 69 */
View Code

转载于:https://www.cnblogs.com/zssst/p/11120988.html

你可能感兴趣的文章
Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine
查看>>
接口测试用例设计
查看>>
WebConfig配置文件详解(转载自逆心的博客)
查看>>
Ex3_28 在2SAT问题中,给定一个字句的集合..._第十二次作业
查看>>
如何截取iframe的内容,修改他的CSS
查看>>
telnet测试端口是否正常打开
查看>>
python中的__new__、__init__和__del__
查看>>
PHP使用缓存提高网站性能
查看>>
用C#实现智能设备上的NotifyIcon类
查看>>
项目实施(二)
查看>>
HDU 1045 Fire Net
查看>>
Github
查看>>
cmake 手册详解【转】
查看>>
一般在页面上添加隐藏域用来接受设置一些值方便开发
查看>>
net 表格控件
查看>>
CodeForces Round 197 Div2
查看>>
boost-使用format和lexical_cast实现数字和字符串之间的转换
查看>>
Learn a Linux command every day--day2:ls命令
查看>>
java集合的三种遍历方式
查看>>
Visual formatting model
查看>>