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 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会.今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具.每个面具都有一个编号,主办 ...
随机推荐
- saltstack实战3--配置管理之YAML语法
本文来自如下链接http://docs.saltstack.cn/topics/yaml/index.html 了解YAML 默认的SLS文件的renderer是YAML renderer.YAML是 ...
- Linux下配置文件的位置
系统级的配置存放在 /etc 目录中.用户级的配置存放在用户的主目录 /home/user_login_name. SHELL 默认文件 /etc/bashrc – bash shell 的系统级默认 ...
- EWM Matrai B2B管理平台
该应用是一款企业管理的app,可以通过“分享”.“工作分派”.“审批”.“业务”.“工作计划”.“日程”等功能得到有效的管控.该项目主要分为5大模块,分别是近期动态,任务,日程,我,在线聊天.
- 【转载】常用Maven插件介绍
http://www.cnblogs.com/crazy-fox/archive/2012/02/09/2343722.html 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构 ...
- 参数请求post, get , delete中的基本使用(2)
UTF-8数字编码 /// <summary> /// 参数的Url请求 /// </summary> /// <returns></returns> ...
- ios app名字的多语言支持
经测试,不同版本的xcode会有操作细节不同,本次环境xcode6.4 1)编辑Info.plist,添加一个新的属性Application has localized display name, 设 ...
- Ajax之数据连接信息捕获
connDB.properties: DB_CLASS_NAME=com.mysql.jdbc.Driver DB_URL=jdbc:mysql://127.0.0.1:3306/db_datab ...
- JDBC之数据库操作
JDBC重要界面有: java.sgl.DriverManager:完成驱动程序的装载和建立新的数据库连接. java.sgl.Connection:表示对某一指定数据库的连接. java.sgl.S ...
- ssh git设置命令行
#列出key ls -al ~/.ssh #生成key ssh-keygen -t rsa -b -C "your_email@example.com" #判断ssh-agent可 ...
- indeed2017校招在线编程题(网测)三
A. Calculate Sequence 分析:就是斐波那契递推公式,但是初始值是指定的,只用求第10个数,数据范围和复杂度都比较小,直接写. B. 忘了叫啥了. 就是有a-j十个字符组成的字符串, ...