poj2352-线段树-start
来源:互联网 发布:hr系统人力资源软件 编辑:程序博客网 时间:2024/06/09 15:05
线段树
#include <iostream>#include <cstdio>#include <cstring>#define N 32010using namespace std;struct tree{ int l,r; int sum;}a[4*N];void build(int l,int r,int k){ a[k].l=l;a[k].r=r;a[k].sum=0; if(l==r){ return; } int mid=(a[k].l+a[k].r)>>1; build(l,mid,k<<1); build(mid+1,r,k<<1|1);}int query(int l,int r,int k){ int as=0; if(a[k].l==l&&a[k].r==r){ return a[k].sum; } else{ int mid=(a[k].l+a[k].r)>>1; if(l>mid){ as+=(query(l,r,k<<1|1)); } else if(r<=mid){ as+=(query(l,r,k<<1)); } else as+=(query(l,mid,k<<1)+query(mid+1,r,k<<1|1)); return as; }}void ins(int x,int k){ a[k].sum++; if(a[k].l==a[k].r&&a[k].r==x){ return; } int mid=(a[k].l+a[k].r)>>1; if(x<=mid) ins(x,k<<1); else ins(x,k<<1|1);}int main(){ int n; while(~scanf("%d",&n)){ build(0,N,1); int x,y,ans[15010]; memset(ans,0,sizeof(ans)); for(int i=1;i<=n;++i){ scanf("%d%d",&x,&y); ans[query(0,x,1)]++; ins(x,1); } for(int i=0;i<n;++i) printf("%d\n",ans[i]); } return 0;}
0 0
- poj2352-线段树-start
- 【线段树】星星 POJ2352
- POJ2352(线段树)
- poj2352-------------线段树------------(*)
- 线段树基础 poj2352
- POJ2352(Treap || 线段树)
- poj2352线段树
- hdu1541/poj2352 线段树之单点更新
- poj2352(线段树或树状数组)
- poj2352--Stars--线段树&树状数组
- POJ2352 Stars 【树状数组】or【线段树】
- poj2352~树状数组~线段树尝试失败~
- POJ2352 Stars(线段树进阶)
- POJ2352 Stars(线段树 & 树状数组)
- Poj2352-树状数组或线段树
- poj2352 Stars 线段树单点更新
- POJ2352 Interval Tree, Segment Tree, 线段树, 区间树
- 见微知著----POJ2352(树状数组 或 线段树)
- Objective-C 面向对象基础-类
- LaTeX使用小结
- xcode6 快捷键
- JTabbedPane选项窗格的使用
- Log 输出格式
- poj2352-线段树-start
- i os 照相 图片库
- iphone 网络开发 iOS
- 线段树-poj3468
- Spring Security加密策略(转载)
- 输出1000以内的完数
- mount命令以及mount ntfs硬盘权限权限与显示的问题
- iOS Class结构分析
- List源码分析-----模板模式和迭代器模式