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 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会.今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具.每个面具都有一个编号,主办 ...
随机推荐
- ActiveMQ(5.10.0) - Building a custom security plug-in
If none of any built-in security mechanisms works for you, you can always build your own. Though the ...
- HttpClient(4.3.5) - HTTP Authentication
HttpClient provides full support for authentication schemes defined by the HTTP standard specificati ...
- markdown编辑
有用的技巧之,如何实现首行空两格,把输入法切换成全角(shift+space),就可以实现一个两字符的空格了. 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 w s r s r s 文本 ...
- JavaScript之表格修改
讲到表格,我们不免都了解它的属性及用途. colspan跨列(纵向的)和rowspan跨行(横向的). 表格中<tr></tr>标签标示行标签:<td></t ...
- 实现iOS项目一款用swift实现的应用top源码
Top 后台 Swift版本Ios 8 / iPhone 5S适配这边有个登陆,如果你们想测试的话,可以用这个账号, 账号:18868879362 密码:420562 源码下载: http://c ...
- dotnetbar 的BalloonTip的用法
‘设置提示标题 tip.SetBalloonCaption(txt_ID, "提示") ’设置显示的控件 和显示内容文本 tip.SetBalloonText(txt_ID, &q ...
- python字符串操作2
在python有各种各样的string操作函数.在历史上string类在python中经历了一段轮回的历史.在最开始的时候,python有一个专 门的string的module,要使用string的方 ...
- 第九篇、Swift的基本使用
1.访问权限 /* 1> internal : 内部的 1. 默认情况下所有的类&属性&方法的访问权限都是internal 2. 在本模块(项目/包/target)中可以访问 2 ...
- JAVA解析xml的五种方式比较
1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ① ...
- [摘抄] 为什么 Linq 可以高效率查询 SQL ?
From C# in Depth(3rd) - Jon Skeet using (LinqDemoDataContext db = new LinqDemoDataContext()) { var f ...