POJ 2352 HDU1541 Stars(树状数组)
来源:互联网 发布:考研数学文都网络课程 编辑:程序博客网 时间:2024/06/07 08:04
题意:二维平面给定n个点的坐标,然后要你输出每个点的“等级“。每个点的等级是它的左下放的点个数(包括正下放和正左方的点)。即要你输出对于每个点(x,y)来说,有多少点的坐标(xi, yi)满足xi<=x且yi<=y。
思路:题目给出的坐标中已经是按y升序排列,那么其实只用考虑x轴,那么显然就是在前面的点中找比自己小的。
Trick:注意的是累加的时候while循环的条件要改一下,因为我们这里是用x轴坐标的值作为c数组的下标,而x最大到32000,而不是n。
#include <cstdio>#include <queue>#include <cstring>#include <iostream>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <string>#include <set>#include <ctime>#include <cmath>#include <cctype>using namespace std;#define maxn 32000+10#define LL long longint cas=1,T;int c[maxn];int L[maxn];int n;int lowbit(int i){return i&(-i);}int sum(int i){int ans = 0;while (i){ans +=c[i];i-=lowbit(i);}return ans;}void add(int i,int d){while (i<=maxn){c[i]+=d;i+=lowbit(i);}}int main(){//freopen("in","r",stdin);while (scanf("%d",&n)!=EOF && n){memset(c,0,sizeof(c));memset(L,0,sizeof(L));for (int i = 1;i<=n;i++){int x,y;scanf("%d%d",&x,&y);x++;L[sum(x)]++;add(x,1);}for (int i = 0;i<n;i++)printf("%d\n",L[i]);}//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);return 0;}
0 0
- POJ 2352 HDU1541 Stars(树状数组)
- POJ 2352 HDU1541 Stars(树状数组)
- hdu1541 Stars (树状数组)
- hdu1541 Stars 树状数组
- HDU1541 Stars【树状数组】
- hdu1541-Stars(树状数组)
- HDU1541 Stars 树状数组
- HDU1541 Stars (树状数组)
- HDU1541 Stars (树状数组)
- hdu1541 Stars(树状数组)
- HDU1541 Stars(树状数组)
- poj2352 && hdu1541 Stars(树状数组)
- HDU1541--Stars(树状数组)
- hdu1541 Stars 树状数组水题
- hdu1541 Stars(树状数组+解释)
- POJ 2352 Stars 树状数组
- POJ 2352 Stars【树状数组】
- (树状数组) poj 2352 Stars
- HDU 1176 —— 免费馅饼
- Hadoop中传递list/Map/对象型参数的传递
- 在业务系统中调用水晶报表提示:ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- libffi浅析
- [Python入门]Chapter2 变量、表达式和语句
- POJ 2352 HDU1541 Stars(树状数组)
- 2015年iOS面试题整理
- 完整的微信登陆 接收消息流程
- Experimental Educational Round: VolBIT Formulas Blitz(A)数学
- 推荐算法综述
- new和delete、malloc和free之间的异同点以及用法实例
- 11-题目1431:Sort
- PopWindow实现二级联动菜单
- 自定义用户注册地区键盘(封装)3