POJ 2352 Star 树状数组
来源:互联网 发布:淘宝上卖aj高仿的店铺 编辑:程序博客网 时间:2024/06/10 01:10
题目链接
在坐标上有n个星星,如果某个星星坐标为(x, y), 它的左下位置为:(x0,y0),x0<=x 且y0<=y。如果左下位置有a个星星,就表示这个星星属于level x
按照y递增,如果y相同则x递增的顺序给出n个星星,求出所有level水平的数量。
题目中输入是按照y递增,如果y相同则x递增的顺序给出的, 所以,对于第i颗星星,它的level就是之前出现过的星星中,横坐标x小于等于i星横坐标的那些星星的总数量(前面的y一定比后面的y小)。
所以,需要找到一种数据结构来记录所有星星的x值,方便的求出所有值为0~x的星星总数量。
树状数组可以解决这一类求和问题。
#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<queue>#include<vector>using namespace std;#define Maxn 32005int n,v[Maxn],level[Maxn];int Lowbit(int x){ return x&(-x);}void Add(int pos,int val){ while(pos<=Maxn){ v[pos]+=val; pos+=Lowbit(pos); }}int Sum(int End){ int sum=0; while(End>0){ sum+=v[End]; End-=Lowbit(End); } return sum;}int main(){ //freopen("F:\\11.txt","r",stdin); scanf("%d",&n); for(int i=0;i<n;i++){ int x,y; scanf("%d%d",&x,&y); x++; level[Sum(x)]++; Add(x,1); } for(int i=0;i<n;i++){ printf("%d\n",level[i]); } return 0;}
0 0
- poj 2352 star 树状数组
- 树状数组 POJ 2352 Star
- POJ 2352 Star 树状数组
- POJ 2352 Star (树状数组)
- POJ 2352 star (树状数组)
- POJ 2352 Star Treap||树状数组
- 树状数组入门之POJ 2352 Star
- poj 2352 star 树状数组的变型应用
- hdu1541 star 树状数组
- HDU 1541 star 树状数组
- POJ 2352 树状数组
- poj 2352 树状数组
- POJ 2352 树状数组
- poj 2352(树状数组)
- POJ 2352 树状数组
- POJ 2352 (树状数组)
- poj 2352 树状数组
- poj 2352树状数组
- 最新Chrome离线安装包[官网]
- 6. ZigZag Conversion
- Boot Camp 驱动
- 文章标题
- 光流(四)--Kanade-Lucas-Tomasi(KLT)目标跟踪
- POJ 2352 Star 树状数组
- radio标签获取数据库的值并显示在jsp页面上
- MSM8974 上DeviceTree
- nyoj 84 阶乘的0
- C语言概述和数据类型例题与虚拟空间
- 左右法则——教你如何读懂一个定义
- oracle 12c:新特性-表分区或子分区的在线迁移
- 【Python学习笔记】面向对象编程:访问限制
- linux下JAVA_HOME环境变量的配置