POJ - 2532 Stars
2015-08-18 09:16
246 查看
VJ的题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=14610
题意:给你一个笛卡尔坐标系,存在很多点, 问左下方(左边,下面, 左下边都算)有0到N-1个点的 点有多少个。
解决方法线段树,或者树状数组。
树状数组AC代码:
线段树AC代码:
题意:给你一个笛卡尔坐标系,存在很多点, 问左下方(左边,下面, 左下边都算)有0到N-1个点的 点有多少个。
解决方法线段树,或者树状数组。
树状数组AC代码:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn=32000+10; int n, x; int a[maxn]; int tree[maxn*2]; int num[maxn]; int lowbit(int x){ return x&(-x); } int getsum(int u){ int sum=0; while(u>0){ sum+=tree[u]; u-=lowbit(u); } return sum; } void update(int u){ while(u<=maxn){ ++tree[u]; u+=lowbit(u); } } int main(){ while(~scanf("%d", &n)){ for(int i =1; i<=n;++i) scanf("%d%d", &a[i], &x); memset(num, 0, sizeof(num)); memset(tree, 0, sizeof(tree)); for(int i =1; i<=n;++i){ ++num[getsum(a[i]+1)]; update(a[i]+1); } for(int i =0; i<n; ++i) printf("%d\n", num[i]); } return 0; }
线段树AC代码:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n, x; const int maxn=32000+5; struct Node{ int l, r, num; }tree[maxn*4]; int a[maxn]; int num[maxn]; void build(int l, int r, int o){ tree[o].l=l; tree[o].r=r; tree[o].num=0; if(l==r) return; int mid=(l+r)>>1; build(l, mid, o<<1); build(mid+1, r, (o<<1)+1); } void update(int c, int o){ int l=tree[o].l; int r=tree[o].r; if(l==r) { tree[o].num++; return; } int mid=(l+r)>>1; if(c<=mid) update(c, o<<1); else update(c, (o<<1)+1); tree[o].num=tree[o<<1].num+tree[o*2+1].num; } int query(int L, int R, int o){ int l=tree[o].l; int r=tree[o].r; if(l==L&& r==R) return tree[o].num; int mid=(l+r)>>1; if(R<=mid) return query(L, R, o<<1); else if(L>mid) return query(L, R, (o<<1)+1); else return query(L, mid, o<<1)+query(mid+1, R, (o<<1)+1); } int main(){ while(~scanf("%d", &n)){ for(int i=1; i<=n;++i) scanf("%d%d", &a[i], &x); build(1, 32002, 1); memset(num, 0, sizeof(num)); for(int i =1; i<=n;++i){ int nn=query(1,a[i]+1,1); ++num[nn]; update(a[i]+1, 1); } for(int i =0;i<n;++i) printf("%d\n", num[i]); } return 0; }
相关文章推荐
- mysql新建用户及授权
- awk length
- B. Vanya and Books( Codeforces Round #308 (Div. 2) 简单题)
- 阿里云服务器9折优惠券分享
- AltiumDesigner97——封装_L_M_N的区别
- linux文件系统十问
- 德州扑克胜率计算
- HDOJ 1242 Rescue【BFS】
- 一个简单的时间获取客户端程序
- [noip2013]货车运输(kruskal + 树上倍增)
- [Leetcode] Linked List Cycle II
- 面向对象和面向过程
- 串口之COMMTIMEOUTS结构体详解
- hdu2454 Degree Sequence of Graph G(havel定理)
- HDU 4513 吉哥系列故事——完美队形II(Manacher算法最大回文长度 && 两侧沿中点递减)
- browsers shortcut
- 算法竞赛入门经典:第七章 暴力求解法 7.5枚举排列
- Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
- 串口之COMMTIMEOUTS结构体详解
- [转]Window 通过cmd查看端口占用、相应进程、杀死进程等的命令