UESTC 1584 Washi与Sonochi的约定【树状数组裸题+排序】
2017-07-11 09:28
169 查看
题目链接:UESTC 1584 Washi与Sonochi的约定
题意:在二维平面上,某个点的ranked被定义为x坐标不大于其x坐标,且y坐标不大于其y坐标的怪物的数量。(不含其自身),要求输出n行,每行一个整数,分别代表rank为0~n^1的怪物数量。
分析:树状数组+排序,其实就是道树状数组的裸题,和poj2352是同题,套个板子就可以过
思路就是把所有的坐标读入之后,按照x为第优先级,y为第二优先级,都是从小到大排序,只从从0~n-1扫一遍,此时(i时)树状数组里的点的x值,
都不比val[i].x大,//这题所有坐标都不同。所以get(val[i].y)即可得到,所有x坐标不大于vali,且y坐标小于vali的坐标(点)的个数,
然后把val[i].y插入到树状数组里。扫一遍即可得到所有答案,复杂度 O(nlogn)!
下面给出AC代码:
题意:在二维平面上,某个点的ranked被定义为x坐标不大于其x坐标,且y坐标不大于其y坐标的怪物的数量。(不含其自身),要求输出n行,每行一个整数,分别代表rank为0~n^1的怪物数量。
分析:树状数组+排序,其实就是道树状数组的裸题,和poj2352是同题,套个板子就可以过
思路就是把所有的坐标读入之后,按照x为第优先级,y为第二优先级,都是从小到大排序,只从从0~n-1扫一遍,此时(i时)树状数组里的点的x值,
都不比val[i].x大,//这题所有坐标都不同。所以get(val[i].y)即可得到,所有x坐标不大于vali,且y坐标小于vali的坐标(点)的个数,
然后把val[i].y插入到树状数组里。扫一遍即可得到所有答案,复杂度 O(nlogn)!
下面给出AC代码:
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int MAXN=100010; struct p { int x, y; }val[MAXN]; inline int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } inline void write(int x) { if(x<0) { putchar('-'); x=-x; } if(x>9) { write(x/10); } putchar(x%10+'0'); } inline bool cmp(const p &a,const p &b) { if(a.x!=b.x) return a.x<b.x; else return a.y<b.y; } int ranked[MAXN<<1]; int Tree[MAXN<<1]; inline int lowbit(int x) { return (x&-x); } inline void add(int x,int value) { for(int i=x;i<MAXN;i+=lowbit(i)) Tree[i]+=value; } inline int get(int x) { int res=0; for(int i=x;i;i-=lowbit(i)) { res+=Tree[i]; } return res; } int main() { int n; n=read(); for(int i=0;i<n;i++) { scanf("%d%d",&val[i].x,&val[i].y); } sort(val,val+n,cmp); for(int i=0;i<n;i++) { ranked[get(val[i].y)]++; add(val[i].y, 1); } for(int i=0;i<n;i++) printf("%d\n", ranked[i]); cout<<endl; return 0; }
相关文章推荐
- POJ 2352 Stars & UESTC 1584 Washi与Sonochi的约定 排序+树状数组
- UESTC 1584 Washi与Sonochi的约定 树状数组+排序
- UESTC 4 Complete Building the Houses 树状数组
- PKU 2481 COWS 排序 + 树状数组
- UESTC - 425:Defense Lines(排序+线段树)
- 排序_纪中1386_bzoj4552_树状数组
- UESTC 1601 艾尔大停电2 二维树状数组+区间更新
- hdu--4911--归并排序||树状数组
- 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 树状数组+离线操作
- 2017ecjtu-summer training #4 UESTC 1584
- HDU 5032 Always Cook Mushroom(极角排序, 树状数组)
- hdu 5032 树状数组+极角排序
- 2016 UESTC Training for Data Structures O - 卿学姐种美丽的花 树状数组+等差数列
- 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组
- vijos P1810导弹拦截 (排序+树状数组)
- ZOJ 3955 Saddle Point (排序/二分/树状数组)
- UESTC - 1716(圆桌排序)
- Codeforces 12D Ball 树状数组模拟3个元素的排序
- 2016 UESTC Training for Dynamic Programming N - 柱爷与子序列 这题和N题有些相似之处、用了树状数组
- HDU ~ 1394 ~ Minimum Inversion Number(暴力||归并排序||线段树||树状数组)