博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pku2352 Stars
阅读量:6094 次
发布时间:2019-06-20

本文共 1391 字,大约阅读时间需要 4 分钟。

平面中n个点,求每个点左下点的数量,直接上树状数组,题目数据以y为第一关键字,x为第二关键字升序排列了,所以只需从1到n依次插入横坐标,统计之前的小于当前点的横坐标的点数即可,注意树状数组上限是坐标最大值,不是n,同时坐标还有0的可能,所以都加1才行。

View Code
1 program pku2352(input,output); 2 var 3    c          : array[0..40000] of longint; 4    x,y,answer : array[0..40000] of longint; 5    n,maxx     : longint; 6 procedure init; 7 var 8    i : longint; 9 begin10    maxx:=0;11    readln(n);12    for i:=1 to n do13    begin14       readln(x[i],y[i]);15       inc(x[i]);16       if x[i]>maxx then17      maxx:=x[i];18    end;19 end; {
init }20 function lowbit(x :longint ):longint;21 begin22 exit(x and(-x));23 end; {
lowbit }24 procedure insect(pos,w: longint );25 begin26 while pos<=maxx do27 begin28 inc(c[pos],w);29 pos:=pos+lowbit(pos);30 end;31 end; {
insect }32 function find(pos :longint ):longint;33 begin34 find:=0;35 while pos>0 do36 begin37 inc(find,c[pos]);38 pos:=pos-lowbit(pos);39 end;40 end; {
find }41 procedure main;42 var43 i : longint;44 begin45 for i:=1 to n do46 begin47 inc(answer[find(x[i])]);48 insect(x[i],1);49 end;50 end; {
main }51 procedure print;52 var53 i : longint;54 begin55 for i:=0 to n-1 do56 writeln(answer[i]);57 end; {
print }58 begin59 init;60 main;61 print;62 end.

转载于:https://www.cnblogs.com/neverforget/archive/2012/04/15/2450559.html

你可能感兴趣的文章
解决ctrl+shift+F快捷键eclipse格式化与输入法简繁转换冲突问题
查看>>
kali在vbox上运行设置共享文件夹
查看>>
【观点】程序员的七大坏毛病
查看>>
一起谈.NET技术,Mono向Mac OS应用程序开发示好
查看>>
一起谈.NET技术,C#调试心经(续)
查看>>
是否该让开发人员跟客户直接交流
查看>>
艾伟_转载:ASP.NET实现类似Excel的数据透视表
查看>>
计算机组成原理-第3章-3.4
查看>>
Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)...
查看>>
实验八 sqlite数据库操作
查看>>
JavaScript json对象与字符串 互转
查看>>
四种简单的排序算法(转)
查看>>
Quartz2D之着色器使用初步
查看>>
多线程条件
查看>>
Git [remote rejected] xxxx->xxxx <no such ref>修复了推送分支的错误
查看>>
Porter/Duff,图片加遮罩setColorFilter
查看>>
黄聪:VMware安装Ubuntu10.10【图解】转
查看>>
Centos 6.x 升级openssh版本
查看>>
公式推♂倒题
查看>>
无法嵌入互操作类型“……”,请改用适用的接口
查看>>