首页 > 代码库 > poj 2352 Stars
poj 2352 Stars
题意就是一颗星星的左下方有多少颗星星就是几级;
把每级的星星个数统计好输出就ok;
但不能用二维树状数组,会超内存,,
#include<stdio.h> #include<string.h> #include<iostream> #define maxn 32001 using namespace std; int a; int arr[maxn]; int low(int x) { return x&(-x); } void update(int x,int val) { for(int i=x;i<=maxn;i+=i&-i) arr[i]+=val; } int getsun(int x) { int temp=0; while(x>0) { temp+=arr[x]; x-=low(x); } return temp; } int main() { int stars[maxn]; memset(stars,0,sizeof(stars)); scanf("%d",&a); memset(arr,0,sizeof(arr)); for(int i=1;i<=a;i++) { int x,y;; scanf("%d %d",&x,&y); int level=getsun(x+1); stars[level]++; update(x+1,1); } for(int i=0;i<a;i++) printf("%d\n",stars[i]); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。