PKU 2352 Stars(裸一维树状数组)
题目大意:原题链接
就是求每个小星星左小角的星星的个数。坐标按照Y升序,Y相同X升序的顺序给出
由于y轴已经排好序,可以按照x坐标建立一维树状数组
关键是要理解树状数组中的c[maxn]数组的构成方式,例如c1=a1,c2=c1+a2,c3=a3,c4=c2+c3+a4,c5=a5,
c6=c5+a6,c7=a7,c8=c4+c6+c7+a8......
(可以发现当c[maxn]数组的下标为2的幂次方时,c[n]则为数组a[maxn]的前n项和)
具体请看树状数组的构成图

Sum(int i)表示对a[maxn]数组元素的求前i项和
#include<cstdio>
#include<cstring>
using namespace std;
int c[];
int cnt[];
int lowbit(int x)
{
return x&(-x);
}
void Add(int i,int val)
{
while(i<=){
c[i]+=val;
i+=lowbit(i);
}//i为下一个管辖i在内且即将要修改的c[maxn]数组元素下标
}
//返回s为横坐标为i的左下方的星星个数之和(同时也是该星星级数)
int Sum(int i)
{
int s=;
while(i>){
s+=c[i];
i-=lowbit(i);//i减掉自己管辖在内的星星数
}//i为下一个虽不被i管辖却即将要加和的c[maxn]数组元素下标
return s;
}
int main()
{
int n,x,y;
while(scanf("%d",&n)!=EOF){
memset(c,,sizeof(c));
memset(cnt,,sizeof(cnt));
for(int i=;i<n;i++){
scanf("%d%d",&x,&y);
int t=Sum(x);//+1是为了避免x=0,t为级数
cnt[t]++;
Add(x,);
}
for(int i=;i<n;i++)
printf("%d\n",cnt[i]);
}
return ;
}
PKU 2352 Stars(裸一维树状数组)的更多相关文章
- poj 3321 Apple Tree(一维树状数组)
题目:http://poj.org/problem?id=3321 题意: 苹果树上n个分叉,Q是询问,C是改变状态.... 开始的处理比较难,参考了一下大神的思路,构图成邻接表 并 用DFS编号 白 ...
- Wikioi 1080一维树状数组
半个月时间最终把那些杂七杂八的学完了,尽管学完也,也仅仅是有了个模板,自己手敲还是不太行.所以如今開始要疯狂刷题了! ! .!!! 这题裸的树状数组.曾经写那道<敌兵布阵>的时候写过,所以 ...
- 一维树状数组(HD1166)
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string.h> using namespace st ...
- HDU 1556 Color the ball (一维树状数组,区间更新,单点查询)
中文题,题意就不说了 一开始接触树状数组时,只知道“单点更新,区间求和”的功能,没想到还有“区间更新,单点查询”的作用. 树状数组有两种用途(以一维树状数组举例): 1.单点更新,区间查询(即求和) ...
- 树状数组-HDU1541-Stars一维树状数组 POJ1195-Mobile phones-二维树状数组
树状数组,学长很早之前讲过,最近才重视起来,enmmmm... 树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据 ...
- Stars(BIT树状数组)
Stars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU 5126 stars (四维偏序+树状数组)
题目大意:略 题目传送门 四维偏序板子题 把插入操作和询问操作抽象成$(x,y,z,t)$这样的四元组 询问操作拆分成八个询问容斥 此外$x,y,z$可能很大,需要离散 直接处理四维偏序很困难,考虑降 ...
- POJ 2352 Stars【树状数组】
<题目链接> 题目大意: 题目给出n个点,这些点按照y坐标的升序,若y相同,则按照x的升序顺序输入,问,在这些点中,左下角的点的数量分别在0~n-1的点分别有多少个,写出它们的对应点数. ...
- POJ-2352 Stars 树状数组
Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39186 Accepted: 17027 Description A ...
随机推荐
- 学习:在Eclipse中用TODO标签管理任务(Task)。
1.Windows->Perferences->Java->Compile->Task Tags,我们就可以自定义任务标签,Eclipse中可以支持HIgh,Normal,Lo ...
- mac zsh选择到行首的快捷键
Mac OS X 下zsh切换窗口的快捷键:Shift-Command-←. 移动到当前命令行的行首,使用快捷键[Ctrl][A].移动到当前命令行的行尾,使用快捷键[Ctrl[E].
- Mac 文件读写权限问题 OSError: Operation not permitted
Mac在OS X 10.11以后加入了Rootless功能,主要是限制了root权限,阻止用户对部分路径下的目录进行更改.受到限制的有以下目录: /System /bin /sbin /usr (ex ...
- KVC/KVO之暴力的KVC
本章将分为三个部分: KVC是什么 KVC之Set/Get KVC键值路径之Set/Get KVC是什么 KVC,即 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间 ...
- DecimalFormat 四舍五入Float类型的坑
今天又踩了一个坑,使用DecimalFormat来完毕四舍五入.可是传入的是float类型,几轮測试才发现一个问题,传入的float会被转为double类型.大家都知道float是4位,double是 ...
- 剑指 offer set 22 数组中的逆序数
总结 1. 题目为归并排序的变形, 不过我完全没想到 2. 在归并排序进行字符组 merge 时, 统计逆序数. merge 后, 两个子数组是有序的了, 下次再 merge 的时候就能以 o(n) ...
- Java操作文件转码
package downloadTest; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...
- win10系统安装Oracle11报错不满足最低要求
以下问题是,在安装Oracle过程中遇到的问题以及自己的解决方法: 问题一:下载好两个Oracle的安装压缩包文件,同时解压后,启动setup.exe,报错:[INS-13001]环境不满足最低要求. ...
- json和jsonp解决跨域传输数据等
https://kb.cnblogs.com/page/139725/ https://blog.csdn.net/lambert310/article/details/51683775
- Django1.6 运行manage.py 报错解决办法(ImportError)
django项目中运行manage.py python manage.py runserver 出现如下错误提示: Traceback (most recent call last): File &q ...