poj2352(树状数组)
题目链接:https://vjudge.net/problem/POJ-2352
题意:在直角坐标系中给出n个点的 (x,y),(0<=x,y<=32000),定义每个点的level为(x',y')的数量,其中x'<=x,y'<=y。输出所有level的点的个数。
思路:这几天开始写树状数组的题,加油!!因为输入为按y升序排列,在y相等时按x升序排列。所以当输入点i时,对其level有贡献的点一定在点i之前,而不会在其后。所以点i的level为之前出现的点的横坐标<=xi的个数。然后就特别适合用树状数组和线段树来解了,用树状数组tr[x]来保存横坐标属于[1,x]之间的点的个数,每次输入进行区间查询和单点修改。要注意的是这里要把x加一,因为题目的x从0开始,相当于所有点右移一位。
AC代码:
#include<cstdio> #include<cctype> using namespace std;inline int read(){int x=0,f=0;char c=0;while(!isdigit(c)){f|=c=='-';c=getchar();}while(isdigit(c)){x=(x<<3)+(x<<1)+(c^48);c=getchar();}return f?-x:x; }int n,tr[32005],ans[15005];int lowbit(int x){return x&(-x); }void update(int x){while(x<=32001){++tr[x];x+=lowbit(x);} }int query(int x){int ans=0;while(x>0){ans+=tr[x];x-=lowbit(x);}return ans; }int main(){n=read();for(int i=0;i<n;++i){int x=read()+1,y=read()+1;++ans[query(x)];update(x);}for(int i=0;i<n;++i)printf("%d\n",ans[i]);return 0; }
转载于:https://www.cnblogs.com/FrankChen831X/p/10799328.html
poj2352(树状数组)相关推荐
- [POJ2352] Stars 夜空星辰 - 树状数组
题目描述 夜空中有N颗恒星(N≤100000),每颗恒星具有其坐标(x, y)(0≤x, y≤100000).现在,天文学家要对这些恒星进行分类,分类的标准如下:对于任意一颗恒星S(x,y),如果存在 ...
- szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】
树状数组(Binary Index Tree) 树状数组可以解决可以转化为前缀和问题的问题 这是一类用以解决动态前缀和的问题 (有点像线段树简版) 1.对于 a1 + a2 + a3 + - + an ...
- 数据结构一【树状数组】普通、二维、离线树状数组的(单点修改,单点查询,区间修改,区间查询)模板及应用例题总结
文章目录 树状数组 lowbit 线段树与树状数组 单点修改 区间查询 区间修改 区间求和 二维树状数组 离线树状数组 例题 POJ:stars MooFest [SDOI2009]HH的项链 Tur ...
- 树状数组萌新讲解+基础习题【一点一滴】
树状数组基础篇 树状数组讲点 中文名:树状数组 英文名:Binary Indexeds Tree 英译中:二进制索引树 这特么多清楚 引入: 给你n个数 1. 求区间的的和 2. 改变某个值 然后朴素 ...
- 树状数组相关应用之平面范围求和问题
平面范围求和 此类问题实际上是树状数组推广到二维的情形 平面子矩阵求和:POJ-2352 此题是求[0–x][0–y]矩阵中除自身[x][y]外的求和 二维解法: #include <iostr ...
- 洛谷 P5057 [CQOI2006]简单题(树状数组)
嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...
- Color the ball(HDU1556)树状数组
每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...
- 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组
[BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...
- Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)
题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化.比线段树快了12ms~ 代码: #include<cstdio> #include< ...
最新文章
- fatal error LNK1181: 无法打开输入文件“libx264.lib”
- ntoskrnl.exe文件丢失或损坏的解决方法
- mysql50到例题_关于MySQL的经典例题50道 答案参考
- android 小工具:pc 上用 curl 命令打开手机浏览器,浏览指定网址
- java设计模式迭代器模式_迭代器模式和Java
- 创建一个学生信息表,与页面分离
- 状态压缩 之 UVA 10944 - Nuts for nuts..
- 《数据库设计入门经典》读书笔记——第二章:工作场所中的数据库建模
- [Java] 1006. Sign In and Sign Out (25)-PAT甲级
- linux rz上传文件及出错解决方案
- linux挂载nfs权限不够,无法写入挂载点(nfs-server),获得“权限被拒绝”
- openGauss 训练营第三期结营啦!PPT 85个FAQ大放送!文末附51位结营学员名单
- Web前端技术基础实验报告四之列表实现简易网站导航
- 解决荣耀magicbook Linux版 无线网卡驱动安装不上的问题
- 互联网寒冬?软件测试行业饱和了?为何每年还会增加40万测试员?
- css 细线表格,如何在Dreamweaver中制作细线表格?
- PCL之kd-tree详解
- 通过rustlings源码了解rust如何从命令行参数里面获取值的方式
- 【虚幻引擎】实现类LOL缓慢扣血血条
- QFont/QFontInfo方法功能(QT5.12)