poj2352
来源:互联网 发布:中盟网络快运 编辑:程序博客网 时间:2024/06/06 11:38
//poj2352求该点包含的点时所有比它低的点都已经加过#include<iostream>#include<cstdio>using namespace std;int a[32005];int b[32005];int tree[32001*4];void Build(int p,int l,int r,int x) //先建立0~x范围的分支{ if(l==r){ tree[p]++; //建立叶子节点 return; } int mid=(l+r)/2; if(x<=mid) Build(p<<1,l,mid,x); //建立左子树 else Build(p<<1|1,mid+1,r,x); //建立右子树 tree[p]=tree[p<<1]+tree[p<<1|1]; //当前节点的值}/*void Update(int p,int l,int r,int x,int num){ if(l==r){ tree[p]+=num; return;} int mid=(l+r)/2; if(x<=mid) Update(p<<1,l,mid,x,num); else Update(p<<1|1,mid+1,r,x,num); tree[p]=tree[p<<1]+tree[p<<1|1]; }*/int Query(int p,int l,int r,int x,int y){ if(x<=l&&y>=r) return tree[p]; //返回要找的区间和 int mid=(l+r)/2; if(y<=mid) return Query(p<<1,l,mid,x,y); else if(x>mid) return Query(p<<1|1,mid+1,r,x,y); else return (Query(p<<1,l,mid,x,mid)+Query(p<<1|1,mid+1,r,mid+1,y));}int main(){ int n; scanf("%d",&n); int x,y,maxn=-1; for(int i=0;i<n;i++) { scanf("%d%d",&a[i],&y); maxn=max(maxn,a[i]); } for(int i=0;i<n;i++) { Build(1,0,maxn,a[i]); //逐步建立0~a[i]范围的线段树 b[Query(1,0,maxn,0,a[i])-1]++; } for(int i=0;i<n;i++) { printf("%d\n",b[i]); } return 0;}
0 0
- POJ2352
- poj2352
- POJ2352
- POJ2352
- poj2352
- poj2352
- POJ2352
- poj2352
- poj2352
- poj2352
- POJ2352
- POJ2352
- poj2352
- Poj2352
- poj2352
- POJ2352
- poj2352
- poj2352 Stars
- poj 1408 Fishnet
- JavaEE学习之路|第一个jsp
- jsp页面中的错误总结,关于form表单的button和submit按钮
- Spring Cache抽象详解
- Java IO的RandomAccessFile的使用(1)
- poj2352
- android 程序完全退出
- 基于PCNTL的PHP并发编程
- html5语义化标签
- 对象的行为
- 数据结构:时间复杂度
- (转)+(自己总结) Atom 快捷键 + 插件推荐
- Java JDK版本下载
- jQuery选择器大全(48个代码片段+21幅图演示)