UVALive 4329 Ping pong(解法二:树状数组)
来源:互联网 发布:mac pdg转pdf 编辑:程序博客网 时间:2024/06/07 03:04
思路详解参见:http://blog.sina.com.cn/s/blog_691ce2b70101lolv.html
这里用树状数组实现,时间要快很多。
//0 KB113 ms#include <stdio.h>#include <string.h>#define lowbit(x) (x &(-x))const int M = 100005;const int N = 20005;int ar[M],val[N],lmin[N],rmin[N];void add (int x){ while (x <= M) ar[x] += 1,x += lowbit(x);}int sum(int x){ int res = 0; while (x > 0) res += ar[x],x -= lowbit(x); return res;}int main (){ int T,n,i; scanf ("%d",&T); while (T--) { scanf ("%d",&n); memset (ar,0,sizeof(ar)); for (i = 1;i <= n;i ++) { scanf ("%d",&val[i]); add(val[i]); lmin[i] = sum(val[i]-1); } memset (ar,0,sizeof(ar)); for (i = n;i >= 1;i --) { add(val[i]); rmin[i] = sum(val[i]-1); } //for (i = 1;i <= n;i ++) // printf ("%d %d\n",lmin[i],rmin[i]); long long ans = 0; for (i = 1;i <= n;i ++) ans += lmin[i]*(n-i-rmin[i])+(i-lmin[i]-1)*rmin[i]; printf ("%lld\n",ans); } return 0;}
- UVALive 4329 Ping pong(解法二:树状数组)
- UVALive - 4329 Ping pong (树状数组)
- uvalive 4329 Ping pong---树状数组
- 4329 - Ping pong uvalive+树状数组
- uvalive 4329 Ping pong 树状数组
- UVALIVE 4329 Ping pong(树状数组)
- uvalive 4329 Ping pong (树状数组)
- UVALive 4329--Ping pong+树状数组
- UVALive - 4329 Ping pong (树状数组)
- UVALive 4329 Ping pong(树状数组)
- UVALive 4329Ping pong(树状数组)
- UVALive 4329 Ping pong(树状数组)
- uvalive 4329 Ping Pong(树状数组)
- UVAlive - 4329 —— Ping pong 【树状数组】
- UVALive - 4329 Ping pong 数状数组
- Ping pong(树状数组)
- UVALive 4329 Ping pong
- UVALive 4329 Ping pong
- POJ3155--Hard Life
- HDU 4628 Pieces(状态压缩dp)
- IOS---------------------------开发常用代码
- CI框架学习3
- 备忘录:审批流程的安全检测
- UVALive 4329 Ping pong(解法二:树状数组)
- hdu-数列有序
- python33 通过 cx_Freeze-4.3.1 打包 exe
- dynamips相关经验
- 理解mysql锁(2)表级锁定
- plsql-动态sql
- C/C++语言的一些技巧(1)
- UVA 165 (13.07.29)
- %TYPE 和 %ROWTYPE