1062: [NOI2008]糖果雨 - BZOJ
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1062
神题一个,直接讲思路了(全都是看别人的)
首先我们把一个云用一个平面上的点(t,length)表示,t表示云的左端到0时的时间,因为运动周期为len*2,所以mod len*2
然后我们要做的就是回答询问(t,l,r)
对于时间>t的点,时间不超过t+r,因为超过t+r,云的左端点就到了r的右边,然后length要在(l-(时间-t),r-(时间-t))之间
对于时间<t的点,时间不小于t-r,因为小于t-r,云的左端点就到了r的右边,然后length要在(l-(t-时间),r-(t-时间))之间
我们要求的答案就是在这两个平行四边形的内部的点的个数,用两个树状数组维护平行四边形内部点的个数(一个左偏45度,一个右偏45度)
实际情况要求4个平行四边形,因为有可能t+r或t-r越界
const
maxl=;
maxn=;
type
arr=array[..maxl*,..maxl*]of longint;
var
a,b:arr;
t,l:array[..maxn]of longint;
n,len:longint; procedure add(var a:arr;x,y,z:longint);
var
i:longint;
begin
inc(x);
inc(y);
if (x<=) or (y<=) then exit;
while x<=len*+ do
begin
i:=y;
while i<=len*+ do
begin
inc(a[x,i],z);
i:=i+(i and(-i));
end;
x:=x+(x and(-x));
end;
end; function sum(var a:arr;x,y:longint):longint;
var
i:longint;
begin
inc(x);
inc(y);
sum:=;
if x>len* then x:=len*+;
if y>len* then y:=len*+;
sum:=;
while x> do
begin
i:=y;
while i> do
begin
inc(sum,a[x,i]);
i:=i-(i and(-i));
end;
x:=x-(x and (-x));
end;
end; procedure add(x,y,z:longint);
begin
add(a,x,y+x,z);
add(b,x,y-x+len*,z);
end; function area(var a:arr;x1,y1,x2,y2:longint):longint;
begin
exit(sum(a,x2,y2)+sum(a,x1-,y1-)-sum(a,x1-,y2)-sum(a,x2,y1-));
end; procedure main;
var
i,k,tt,cc,ll,rr,dd,s,ans:longint;
begin
read(n,len);
for i:= to n do
begin
read(k);
case k of
:begin
read(tt,cc,ll,rr,dd);
t[cc]:=(tt-dd*ll+len*)mod (len*);
l[cc]:=rr-ll;
add(t[cc],l[cc],);
end;
:begin
read(tt,ll,rr);
tt:=tt mod (len*);
s:=longint(rr=len);
ans:=area(a,tt,ll+tt,rr+tt,len*)
+area(a,,ll+tt-len*,rr+tt-len*-s,len*)
+area(b,tt-rr+len*+s,ll-tt,len*,len*)
+area(b,tt-rr,ll-tt+len*,tt-,len*);
writeln(ans);
end;
:begin
read(tt,cc);
add(t[cc],l[cc],-);
end;
end;
end;
end; begin
main;
end.
1062: [NOI2008]糖果雨 - BZOJ的更多相关文章
- 【BZOJ 1062】 1062: [NOI2008]糖果雨 (二维树状数组)**
1062: [NOI2008]糖果雨 Description 有一个美丽的童话:在天空的尽头有一个" 糖果国" ,这里大到摩天大厦,小到小花小草都是用糖果建造而成的.更加神奇的是, ...
- BZOJ 1062: [NOI2008]糖果雨(二维树状数组)
首先嘛,这道题是非同一般的恶心= = 然后首先膜拜一下CDQ大神ORZ在考场上A了这道题ORZ 这道题看到的话,我是先想把云朵化成在0s时的位置,但很容易发现这样只能单点查询而不能查询整段 结果只能膜 ...
- [NOI2008]糖果雨
bzoj1062[Noi2008]糖果雨 首先给出的颜色没有用. 估计要用数据结构.而线段难以维护. 考虑把线段变成点 T是单增的. 所以询问的时候,存在的线段都可能贡献答案. 那些线段的位置如果可以 ...
- [bzoj1062] [NOI2008]糖果雨
Description 有一个美丽的童话:在天空的尽头有一个" 糖果国" ,这里大到摩天大厦,小到小花小草都是用糖果建造而成的.更加神奇的是,天空中飘满了五颜六色的糖果云,很快糖果 ...
- BZOJ 1062 糖果雨
http://www.lydsy.com/JudgeOnline/problem.php?id=1062 思路:找到平行四边形以后,变换坐标:y->y-kx,k为斜率,这样变成了矩形,然后只要二 ...
- bzoj1062【Noi2008】糖果雨
orz.....神tm数形结合题 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1062 插入线段,删除线段,查询区间内线段个数,线段随时间往复 ...
- 1045: [HAOI2008] 糖果传递 - BZOJ
Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1.Input 小朋友个数n 下面n行 aiOutput 求使所有人获得均等糖果的 ...
- 1065: [NOI2008]奥运物流 - BZOJ
Sample Input4 1 0.52 3 1 310.0 10.0 10.0 10.0Sample Output30.00 推荐题解:http://blog.csdn.net/whjpji/art ...
- 1064: [Noi2008]假面舞会 - BZOJ
Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会.今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具.每个面具都有一个编号,主办 ...
随机推荐
- Html5中的video元素
最近在做门户的时候遇到要显示企业的视频介绍,需要找到一个在aspx页面播放视频的html,最后找到了是一段HTML5最新的html代码,如下: /// <summary> /// 播放视频 ...
- 返回页面,主页面不刷新window.history.go(-1),主页面刷新window.location.go(-1)
返回上一页,不刷新 window.history.go(-1) 返回上一页,刷新 window.location.go(-1)
- Spring使用总结
一.基础JAR包 spring-beans.jar spring-context.jar spring-core.jar spring-expression.jar 二.XML的配置 1.一级结构 & ...
- Xcode修改项目名称教程
http://wenku.baidu.com/view/4e939b1cf61fb7360a4c653b
- (转)使用CruiseControl+SVN+ANT实现持续集成之二
1. 环境搭建 1.1. 下载及目录介绍 从官方站点http://cruisecontrol.sourceforge.net/download.html下载一份最新的 CC 压缩包,最新的版本号为2. ...
- 4月10日学习笔记——jQuery选择器
概念 jQuery 是一套Javascript脚本库,注意 jQuery 是脚本库,而不是脚本框架."库"不等于"框架".jQuery 并不能帮助我们解决脚本的 ...
- CSS 样式二
CSS文本样式 text-align:设置文本的对齐方式 取值: left 向左对齐 right:向右对齐 center:居中对齐 text-indent:设置文本的首行缩进 例如,字体设为12px, ...
- 抓取dump
1,在程序奔溃前部署.adplus.exe -crash -pn explorer.exe -o d: -crash:当进程挂掉的时候抓取dump,只能抓取到进程报错时的信息,如果进程不报错,就无法抓 ...
- [ZZ+CH] Html5 canvas+js 时钟
总之新Blog入驻以后,又开始老习惯,到处折腾自定义的空间,放些东西. 想起以前大一的时候做过一个Javascript的时间显示器,现在想做一个时钟,当然现在老奸巨猾,会先去看一看有前辈写过没. 前辈 ...
- Ubuntu 下 glpk 的安装及使用
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4156204.html glpk是一个开源的求解线性规划的包. 添加源: deb http:/ ...