POJ 2352 树状数组
2015-03-15 18:52
267 查看
这是第一道自己想出来的树状数组题目。。好心酸。。
A了老夫一下午,前40分钟在想是树状数组还是线段树,最后终于在树状数组上找到思路了。。嘤嘤。。。
题目大意是让计算每个star左下方星星的个数,并输出拥有相同个数星星的数目。。
难点就是要自己重写sort()方法,一开始Bit数组开小了,找bug找的我心好累。。恩,就这样吧,A了一题,神清气爽~
PS:还要注意x=0时的情况~
A了老夫一下午,前40分钟在想是树状数组还是线段树,最后终于在树状数组上找到思路了。。嘤嘤。。。
题目大意是让计算每个star左下方星星的个数,并输出拥有相同个数星星的数目。。
难点就是要自己重写sort()方法,一开始Bit数组开小了,找bug找的我心好累。。恩,就这样吧,A了一题,神清气爽~
PS:还要注意x=0时的情况~
#include<stdio.h> #include<iostream> #include<math.h> #include <algorithm> #include <string.h> using namespace std; #define MAX_N 15005 #define MAX_XY 32005 int Bit[MAX_XY]; int temp[MAX_N]; int ans[MAX_N]; typedef pair <int ,int> p; p source[MAX_N]; int N; bool cmp (const p a, const p b) { if(a.first>b.first) { return 0; } else if(a.first<b.first) { return 1; } else if(a.second>b.second) { return 0; } else { return 1; } } int lowBit(int x) { return x&(-x); } void update(int x,int c) { for(int i=x;i<MAX_XY;i+=lowBit(i)) { Bit[i]+=c; } } int getsum(int x) { int ans = 0; for(int i=x;i>0;i-=lowBit(i)) { ans += Bit[i]; } return ans; } int main() { scanf("%d",&N); int a,b; for(int i=1;i<=N;i++) { scanf("%d%d",&source[i].second,&source[i].first); //注意:第0位没有使用 } sort(source+1,source+N+1,cmp); // for(int i=1;i<=N;i++) // { // printf("%d %d\n",source[i].first,source[i].second); // } for(int i=1;i<=N;i++) { temp[i]=source[i].second; } memset(Bit,0,sizeof(int)*MAX_XY); memset(ans,0,sizeof(int)*N); for(int i=1;i<=N;i++) { // printf("temp=%d\n",temp[i]); // for(int i=1;i<10;i++) printf("%d ",Bit[i]); // printf("\n"); // printf("%d\n",getsum(temp[i])); ++ans[getsum(temp[i]+1)]; update(temp[i]+1,1); } for(int i=0;i<N;i++) { printf("%d\n",ans[i]); } return 0; }
相关文章推荐
- poj2352~树状数组~线段树尝试失败~
- POJ 2352 Stars 树状数组
- POJ 2352 Stars 解题思路,树状数组
- POJ2352 Stars(线段树 & 树状数组)
- POJ 2352 Stars 树状数组
- POJ 2352 树状数组
- poj2352 树状数组
- POJ_2352_树状数组
- POJ_2352 树状数组
- POJ 2352 Stars 树状数组
- POJ-2352-Stars-树状数组
- poj 2352 树状数组(星星的级别)
- POJ 2352 stars 树状数组
- POJ 2352-Stars-树状数组
- POJ 2352 树状数组
- poj_2352树状数组
- POJ2352 Stars 树状数组
- POJ 2352 Stars 树状数组
- poj2352 Stars (第一道树状数组
- POJ2352 Stars 树状数组