POJ 2352 Stars & UESTC 1584 Washi与Sonochi的约定 排序+树状数组
来源:互联网 发布:软件成本估算专家 编辑:程序博客网 时间:2024/05/17 12:57
题目
这两个题出题思路一样。不一样的地方在于 Stars 的数据范围是 1-15000,0-32000,而约定的数据范围是1-100000,1-100000.即使是这样,POJ 的题花了我344ms跑过去,而UESTC只用了64ms。这是两张图片。为什么这张图上园子这么帅!不科学。
题目翻译一下,平面直角坐标系第一象限或者坐标轴上有n个点,定义一个点的等级(level,rank)为横坐标纵坐标均不大于它的点的个数。输出level分别为0 to n-1的点的个数。
题解
昨天打的树状数组模板马上就可以用了。x和y都是影响答案的内容,我们先对x排序,这样接下来我们就不用管横坐标,只要前者的纵坐标小于等于后者,后者的等级就+1.
struct enemy{int x,y;}vertex[boss+10];inline bool cmp(enemy a,enemy b){return a.x!=b.x?a.x<b.x:a.y<b.y;}
接下来我们只要按顺序枚举每一个点的纵坐标,设数组dengji[i]为等级为i的点的个数,用树状数组实时优化就可以了。注意UESTC1584的题解不能直接交到POJ上去,要做修改。(数据范围中有0)我也不知道为什么我直接交到POJ上会TLE.
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define lowbit(x) (x&-x)using namespace std;const int boss=1e5;struct enemy{int x,y;}vertex[boss+10];inline bool cmp(enemy a,enemy b){return a.x!=b.x?a.x<b.x:a.y<b.y;}int dengji[boss+10],c[boss+10],n;inline int get(int x){int sum=0;for (;x;x-=lowbit(x)) sum+=c[x];return sum;}inline void add(int x,int y){for (;x<=boss;x+=lowbit(x)) c[x]+=y;}inline int read(){int x=0;char c=getchar();for (;!isdigit(c);c=getchar());for (;isdigit(c);c=getchar()) x=x*10+c-'0';return x;}int main(){int i;n=read();for (i=0;i<n;i++) vertex[i].x=read(),vertex[i].y=read();sort(vertex,vertex+n,cmp);for (i=0;i<n;i++) dengji[get(vertex[i].y)]++,add(vertex[i].y,1);//比它纵坐标大的都+1,下一次get的时候就能get到它。for (i=0;i<n;i++) printf("%d\n",dengji[i]);}
阅读全文
0 0
- POJ 2352 Stars & UESTC 1584 Washi与Sonochi的约定 排序+树状数组
- UESTC 1584 Washi与Sonochi的约定 树状数组+排序
- POJ-2352 Stars (树状数组,离散,排序)
- POJ 2352 Stars 树状数组 与 1195二维树状数组
- POJ 2352 Stars 树状数组
- POJ 2352 Stars【树状数组】
- (树状数组) poj 2352 Stars
- POJ-2352-Stars-树状数组
- POJ 2352 Stars 树状数组
- POJ 2352 Stars 【树状数组】
- POJ 2352 Stars 树状数组
- POJ-2352 Stars【树状数组】
- POJ 2352 Stars 树状数组
- poj 2352 Stars 树状数组
- poj 2352 Stars 树状数组
- POJ:2352 Stars(树状数组)
- [树状数组]POJ 2352 Stars
- POJ-2352-Stars 树状数组
- Rxjava
- 手机平板charger模块前期bringup主要工作
- oracle的权限管理
- java垃圾回收机制 gc
- CodeForces
- POJ 2352 Stars & UESTC 1584 Washi与Sonochi的约定 排序+树状数组
- 简单进度条
- oracle的基本操作
- __autoload()和spl_autoload_register()的理解
- 经济民族主义的前夜?普华永道思略特全球创新1000强解读
- 阿尔法元并未否定AI需要“人类师父”
- 中科院等发布《2017研究前沿》 中国25个前沿表现卓越 居全球第二
- 开发的数字货币钱包客户端的5个常见问题
- <cisco>思科交换机密码重置