poj 2229 Ultra-QuickSort(树状数组)
来源:互联网 发布:跳跃网络次元大作战 编辑:程序博客网 时间:2024/05/16 17:19
题目链接:点击打开链接
树状数组模板题
本题的数字每个都是不同的所以可以从大到小排,再边插入边查询。如果有重复的数字,需要从小到大排,然后每次res+=N-query(pos)
结果会超int
代码:
#include <cstdio>#include <iostream>#include <cstring>#define ll long long#include <algorithm>using namespace std;int c[500010];struct node{ int id; ll num;}a[500010];int N;bool cmp(node a,node b){ return a.num>b.num;}int lowbit(int n){ return n&(-n);}void add(int p,int n){ while(p<=N){ c[p]+=n; p+=lowbit(p); }}int query(int p){ int res=0; while(p>0){ res+=c[p]; p-=lowbit(p); } return res;}int main(){ while(~scanf("%d",&N)){ memset(c,0,sizeof(c)); if(!N) break; for(int i=1;i<=N;i++){ scanf("%I64d",&a[i].num); a[i].id=i; } sort(a+1,a+N+1,cmp); ll res=0; for(int i=1;i<=N;i++){ res+=query(a[i].id); add(a[i].id,1); } printf("%I64d\n",res); } return 0;}
0 0
- poj 2229 Ultra-QuickSort(树状数组)
- poj - 2299 - Ultra-QuickSort(树状数组)
- POJ 2299 Ultra-QuickSort(树状数组)
- POJ 2299 Ultra-QuickSort (树状数组)
- POJ 2299 Ultra-QuickSort(树状数组)
- poj 2299 Ultra-QuickSort(树状数组)
- POJ 2299 Ultra-QuickSort(树状数组)
- POJ 2299 Ultra-QuickSort (树状数组)
- POJ 2299 Ultra-QuickSort(树状数组)
- poj 2299 Ultra-QuickSort (树状数组)
- poj 3321 Ultra-QuickSort (树状数组)
- Ultra-QuickSort(树状数组)
- poj 2229 Ultra-QuickSort(树状数组求逆序数)
- POJ-2299 Ultra-QuickSort(树状数组)(离散化)
- poj 2299 Ultra-QuickSort(离散化+树状数组)
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
- POJ 2299 Ultra-QuickSort(树状数组+离散化处理)
- POJ 2299-Ultra-QuickSort (树状数组+离散化)
- random python
- 2048
- spring组件扫描<context:component-scan/>使用详解 .
- ACM 222. [POI1997] 便宜的旅行(dp)
- 【Android】 RGB颜色对照表
- poj 2229 Ultra-QuickSort(树状数组)
- HDU 4067 Random Maze
- Android 快速开发系列 打造万能的ListView GridView 适配器
- zedboard上移植OPENCV库
- Spring事务的架构 .
- 测试用例实例--常见功能测试点
- poj 2251(广搜求两点之间的距离)
- 使用goto实现循环,跳转语句
- 表达式求值 NYOJ