poj2352
纪念树状数组初步(……);
这题已经给了y升序,y相同时x升序,(yeah)
所以容易想到O(n^2)的模拟算法;
其实分析一下就是对于当前xi,统计之前有多少个小于等于xi(因为已经保证了没有相同坐标的点)
初学者(比如我),一开始感觉和树状数组没毛关系,但是……
仔细想想发现,树状数组是修改和区间求值的,我们能不能将问题转化呢?
可以!这里用到类似计数排序的思想,a数组表示对x可能出现的范围内中每个数表示的次数;
则:对于当前xi,之前小于等于xi的个数就等于sigma(a[0]~a[x[i]])
这下子就变成树状数组拿手的区间求和了!
但注意细节,因为存在x=0,但构建树状数组下标是从1开始的
所以我们把所有x加1即可,不影响位置之间的关系。
var x,y,ans,b:array[..] of longint;
c:array[..] of longint;
maxx,i,n:longint;
function lowbit(x:longint):longint; //树状数组的核心
begin
lowbit:=x and -x;
end;
function ask(x:longint):longint; //区间求和
begin
ask:=;
while x<> do
begin
ask:=ask+c[x];
x:=x-lowbit(x);
end;
end;
procedure work(x:longint); //更改单点时,注意把父亲节点也要更新
begin
while x<=maxx do
begin
inc(c[x]);
x:=x+lowbit(x);
end;
end; begin
readln(n);
for i:= to n do
begin
readln(x[i],y[i]);
inc(x[i]);
if x[i]>maxx then maxx:=x[i]; //限定范围
end;
for i:= to n do
begin
b[i]:=ask(x[i]);
work(x[i]);
end;
for i:= to n do
inc(ans[b[i]]);
for i:= to n- do
writeln(ans[i]);
end.
相对于线段树,树状数组实现还是很简单的,时空复杂度也不错!
poj2352的更多相关文章
- poj2352(树状数组)
题目链接:https://vjudge.net/problem/POJ-2352 题意:在直角坐标系中给出n个点的 (x,y),(0<=x,y<=32000),定义每个点的level为(x ...
- POJ2352 Stars [树状数组模板]
题意:输入一n颗星星的x,y坐标,给定判断level的标准,即某颗星星左下边(不高于它,不超过他,相当于以他为基准的第三象限)星星的数目为level, 输出level从0到n的星星个数. //poj2 ...
- POJ2352 Stars (静态二叉检索树)
https://vjudge.net/problem/POJ-2352 分析: 由于是按照y坐标的升序,y坐标向等的按x的升序的顺序给出星星.那么某个星星的等级数就是在他前面x坐标小于等于他的x坐标的 ...
- POJ-2352 Stars 树状数组
Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39186 Accepted: 17027 Description A ...
- poj2352消防站
题目大意:有n个点的一棵树,每个点有两个值:w和c.现在要在其中若干点建立消防站,使得每个点到最近的消防站的距离不超过该点的c值,i点建立消防站的费用为w.求最小费用. 分析:本题显然是树型Dp.定义 ...
- 树状数组POJ2352星星
http://poj.org/problem?id=2352 这道题的题意对于住学者应该比较难理解,但是如果弄明白他的意思的话,你就会发现这就是赤裸裸的树状数组,哎,欺负我不懂是吧,当时读题读啦好久, ...
- 【POJ2352】【树状数组】Stars
Description Astronomers often examine star maps where stars are represented by points on a plane and ...
- poj2352 Stars
http://poj.org/problem?id=2352 #include <cstdio> #include <cstring> #define maxn 400000 ...
- POJ2352:Stars
题目 Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34016 Accepted: 14839 Descri ...
随机推荐
- ajax的post用法
<button>点击之后,显示ajax返回的数据</button> 首先在页面上新建了一个按钮,点击这个按钮后,执行ajax操作,并将返回的字符串显示在按钮上. 下面是ajax ...
- jquery全局加载函数的几种方式;
1.使用javascript方式(function(){})(); 2.使用jQuery(function($) {}); 3.使用$(document).ready(function(){}); 其 ...
- C# Windows - ListBox&CheckedListBox
ListBox和CheckedListBox类的属性 属性 说明 SelectedIndex 这个值表明列表框中选中项的基于0的索引 ColumnWidth 在包含多个列的列表框中,这个属性指定列宽 ...
- python学习笔记17(动态类型)
动态类型 在我们接触的对象中,有一类特殊的对象,是用于存储数据的,常见的该类对象包括各种数字,字符串,表,词典.在C语言中,我们称这样一些数据结构为变量,而在Python中,这些是对象. 对象是储存在 ...
- servlet的生命周期与工作原理、使用!
概念: Servlet是一个java程序运行在服务器上,处理客户端请求并做粗响应的程序!Servlet是和平台无关的服务器组件,它运行在Servlet容器中,Servlet容器 负责servlet和客 ...
- struts2拦截器-简单实现非法登录验证
概念:什么是拦截器 拦截器实现了面向切面的组件,它会影响多个业务对象的公共行为封装到一个个可重用的模块,减少了系统的重复代码,实现高度内聚,确保业务对象的整洁! 为什么使用拦截器 拦截器消除了动作 ...
- Microsoft .NET Framework 4.0安装时发生严重错误 无法安装
前几天安装Axure,电脑提示没有安装.NET Framework4.0,然后下载安装,又提示如下图所示情况: 在网上找了好多方法,大多都是打开cmd,输入net stop WuAuServ,修改注册 ...
- springside springmvc 的一个SB问题
<form id="inputForm" modelAttribute="order" action="${ctx}/myorder/orde ...
- 3141: [Hnoi2013]旅行 - BZOJ
Description Input 第一行为两个空格隔开的正整数n, m,表示旅行的城市数与旅行所花的月数.接下来n行,其中第 i行包含两个空格隔开的整数Ai和Bi,Ai表示他第i个去的城市编号.Bi ...
- 1057: [ZJOI2007]棋盘制作 - BZOJ
Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴 ...