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越界
1 const 2 maxl=1010; 3 maxn=1000010; 4 type 5 arr=array[0..maxl*2,0..maxl*4]of longint; 6 var 7 a,b:arr; 8 t,l:array[0..maxn]of longint; 9 n,len:longint; 10 11 procedure add(var a:arr;x,y,z:longint); 12 var 13 i:longint; 14 begin 15 inc(x); 16 inc(y); 17 if (x<=0) or (y<=0) then exit; 18 while x<=len*2+1 do 19 begin 20 i:=y; 21 while i<=len*4+1 do 22 begin 23 inc(a[x,i],z); 24 i:=i+(i and(-i)); 25 end; 26 x:=x+(x and(-x)); 27 end; 28 end; 29 30 function sum(var a:arr;x,y:longint):longint; 31 var 32 i:longint; 33 begin 34 inc(x); 35 inc(y); 36 sum:=0; 37 if x>len*2 then x:=len*2+1; 38 if y>len*4 then y:=len*4+1; 39 sum:=0; 40 while x>0 do 41 begin 42 i:=y; 43 while i>0 do 44 begin 45 inc(sum,a[x,i]); 46 i:=i-(i and(-i)); 47 end; 48 x:=x-(x and (-x)); 49 end; 50 end; 51 52 procedure add(x,y,z:longint); 53 begin 54 add(a,x,y+x,z); 55 add(b,x,y-x+len*2,z); 56 end; 57 58 function area(var a:arr;x1,y1,x2,y2:longint):longint; 59 begin 60 exit(sum(a,x2,y2)+sum(a,x1-1,y1-1)-sum(a,x1-1,y2)-sum(a,x2,y1-1)); 61 end; 62 63 procedure main; 64 var 65 i,k,tt,cc,ll,rr,dd,s,ans:longint; 66 begin 67 read(n,len); 68 for i:=1 to n do 69 begin 70 read(k); 71 case k of 72 1:begin 73 read(tt,cc,ll,rr,dd); 74 t[cc]:=(tt-dd*ll+len*2)mod (len*2); 75 l[cc]:=rr-ll; 76 add(t[cc],l[cc],1); 77 end; 78 2:begin 79 read(tt,ll,rr); 80 tt:=tt mod (len*2); 81 s:=longint(rr=len); 82 ans:=area(a,tt,ll+tt,rr+tt,len*4) 83 +area(a,0,ll+tt-len*2,rr+tt-len*2-s,len*4) 84 +area(b,tt-rr+len*2+s,ll-tt,len*2,len*4) 85 +area(b,tt-rr,ll-tt+len*2,tt-1,len*4); 86 writeln(ans); 87 end; 88 3:begin 89 read(tt,cc); 90 add(t[cc],l[cc],-1); 91 end; 92 end; 93 end; 94 end; 95 96 begin 97 main; 98 end.
View Code
转载于:https://www.cnblogs.com/Randolph87/p/3674812.html
1062: [NOI2008]糖果雨 - BZOJ相关推荐
- 【BZOJ 1062】 1062: [NOI2008]糖果雨 (二维树状数组)**
1062: [NOI2008]糖果雨 Description 有一个美丽的童话:在天空的尽头有一个" 糖果国" ,这里大到摩天大厦,小到小花小草都是用糖果建造而成 的.更加神奇的是 ...
- bzoj 1062: [NOI2008]糖果雨
高手 /**************************************************************Problem: 1062User: lxy8584099Langu ...
- BZOJ 1062: [NOI2008]糖果雨(二维树状数组)
首先嘛,这道题是非同一般的恶心= = 然后首先膜拜一下CDQ大神ORZ在考场上A了这道题ORZ 这道题看到的话,我是先想把云朵化成在0s时的位置,但很容易发现这样只能单点查询而不能查询整段 结果只能膜 ...
- [NOI2008]糖果雨
bzoj1062[Noi2008]糖果雨 首先给出的颜色没有用. 估计要用数据结构.而线段难以维护. 考虑把线段变成点 T是单增的. 所以询问的时候,存在的线段都可能贡献答案. 那些线段的位置如果可以 ...
- bzoj1062: [NOI2008]糖果雨
又是一道神题 题解传送门:http://blog.sina.com.cn/s/blog_86942b1401015yln.html 代码完全抄袭某神,请无视掉 const int N = 1010, ...
- [NOI2008]糖果雨——数形结合的思想
题目描述: 维护一个线段集合支持以下操作: 1. add T L R D :在T秒时加入一条L至R的线段,运动方向为D(每秒向右移动D个单位),D为1或-1. 2. ask t L R: 询问t时刻有 ...
- 【BZOJ1062】[NOI2008]糖果雨【二维树状数组】
[题目链接] 神题. [别人的题解] /* Pigonometry */ #include <cstdio> #include <algorithm>using namespa ...
- [NOI2008] 糖果雨
神题啊!干了一年才AC 首先由于各个操作的时间严格上升,因此在某此操作中,还没被删除的云朵是可以是为永久存在的:这样,又由于云的运动速度大小相同,即周期都为2len,将云的左端点一个周期的往返运动画在 ...
- 【NOI2008】 糖果雨
题目描述 糖果雨 [问题描述] 有一个美丽的童话:在天空的尽头有一个"糖果国",这里大到摩天大厦,小 到小花小草都是用糖果建造而成的.更加神奇的是,天空中飘满了五颜六色的糖 果云, ...
最新文章
- html禁止手机文字放大,js实现移动端微信页面禁止字体放大
- Effective C# 原则18:实现标准的处理(Dispose)模式(译)
- OpenStack 虚拟机热迁移流程图
- 深入struts2(二) ---stuts2长处和主要包、类功能
- mysql使用命令访问数据库_mysql命令操作数据库
- 五笔输入法的前世今生
- [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.9
- 编辑器——sublime
- python怎么判断实数_检查python对象是否可以解释为实数[python]
- 工具--国内最常用开源镜像站大汇总,解决你下载软件慢的问题
- 模拟豆机、高尔顿瓶【java】
- 【R语言】ggplot2作图补充(1)
- CAD软件中文本如何屏蔽
- 根据日期计算星期几 -- 基姆拉尔森计算公式
- ElementUI自定义主题报错“primordials is not defined”最佳解决方案
- 手机个人征信查询攻略
- 二级计算机重点,计算机二级的复习重点
- c语言编程节日祝福,2019程序员祝福语 程序员节祝福语
- 第4章 初识STM32—零死角玩转STM32-F429系列
- linux的rz很慢,Linux rz的使用
热门文章
- 18 | 需求管理:太多人给你安排任务,怎么办?
- (已解决)windows和linux系统中使用 pycharm 时设置打印字体颜色和背景色
- 数实融合激变时刻,与长期主义同行
- Jetson nano串口的使用——UART
- 虚拟贝司拓展音源-Toontrack Acoustic EBX
- dbf shp shx sbn sbx mdb adf等类型的文件的解释
- 专业查苹果测试软件,电池寿命检测软件苹果版-iphone查电池寿命appv2.1.5 iOS版-腾牛苹果网...
- linux查看redis链接数,查看redis连接数
- 《工程伦理与学术道德》第二章习题
- linux 下安装rar解压软件,centos下rar解压工具的安装 rar和unrar命令使用方法