题目描述:

维护一个线段集合支持以下操作:

1. add T L R D :在T秒时加入一条L至R的线段,运动方向为D(每秒向右移动D个单位),D为1或-1。

2. ask t L R: 询问t时刻有多少个线段与L~R这个区间相交。

3.del X: 删除某线段。

地图左界为0,右界为len。线段长度不超过len。

每一秒线段们都在运动(= =||好喜感),当一条线段左端点碰到地图左界或右界时运动方向会改变。

数据范围:操作数≤20w,len≤1000。

问题分析:

吐槽一下:noi2008好强啊~ 这神题完全不会 T_T, 果然我的思维能力太弱了……

不过,这类数形结合的题还是很少见的呢。

不难发现,线段的运动是以2*len为周期的。这样所有时间均能划到模意义下。

为了统一,不妨把每条线段都表示成(x,y)——在x秒诞生的长y的线段。这样,每条线段对与平面内一个点唯一对应~

现在考虑询问:简单起见,不妨令t=0,观察平面内满足L,R要求的区域。

(请原谅我的手残 >_<

这么考虑:

0s诞生的线段,长度至少要L才相交得到。

1s诞生的线段,考虑到这是模系(不然怎么会在1s后的未来诞生),比前者慢了1s,所以位置靠后1,相应长度要求只有L-1。

……

右半边是对称考虑的。实在想不清的话,画个图打点点就好了…… =w= ||

至于t>0的情况,考虑方法同上,只不过图形向右平移了t格。但右端溢出部分会出现在左边,为了方便,不妨把坐标系内信息复制一份接在右边。

至此,问题已经转化成了——平面内单点修改,区域求和。

因为是平行四边形所以有点麻烦,但可以维护两个扭曲的坐标系,使得这两个图形变成矩形。映射关系要想清楚。

最后变成矩形区域求和——二维树状数组就行了。

最后说下几个细节:

1.算左不算右,因为0s和2*len s是同一时间。

2.L=R=0时和R=len时注意特判。

巧妙利用数形结合建模的一道神题啊。 =。= ~

[NOI2008]糖果雨——数形结合的思想相关推荐

  1. 【BZOJ 1062】 1062: [NOI2008]糖果雨 (二维树状数组)**

    1062: [NOI2008]糖果雨 Description 有一个美丽的童话:在天空的尽头有一个" 糖果国" ,这里大到摩天大厦,小到小花小草都是用糖果建造而成 的.更加神奇的是 ...

  2. [NOI2008]糖果雨

    bzoj1062[Noi2008]糖果雨 首先给出的颜色没有用. 估计要用数据结构.而线段难以维护. 考虑把线段变成点 T是单增的. 所以询问的时候,存在的线段都可能贡献答案. 那些线段的位置如果可以 ...

  3. 【BZOJ1062】[NOI2008]糖果雨【二维树状数组】

    [题目链接] 神题. [别人的题解] /* Pigonometry */ #include <cstdio> #include <algorithm>using namespa ...

  4. [NOI2008] 糖果雨

    神题啊!干了一年才AC 首先由于各个操作的时间严格上升,因此在某此操作中,还没被删除的云朵是可以是为永久存在的:这样,又由于云的运动速度大小相同,即周期都为2len,将云的左端点一个周期的往返运动画在 ...

  5. bzoj 1062: [NOI2008]糖果雨

    高手 /**************************************************************Problem: 1062User: lxy8584099Langu ...

  6. 1062: [NOI2008]糖果雨 - BZOJ

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1062 神题一个,直接讲思路了(全都是看别人的) 首先我们把一个云用一个平面上的点( ...

  7. bzoj1062: [NOI2008]糖果雨

    又是一道神题 题解传送门:http://blog.sina.com.cn/s/blog_86942b1401015yln.html 代码完全抄袭某神,请无视掉 const int N = 1010, ...

  8. BZOJ 1062: [NOI2008]糖果雨(二维树状数组)

    首先嘛,这道题是非同一般的恶心= = 然后首先膜拜一下CDQ大神ORZ在考场上A了这道题ORZ 这道题看到的话,我是先想把云朵化成在0s时的位置,但很容易发现这样只能单点查询而不能查询整段 结果只能膜 ...

  9. 【NOI2008】 糖果雨

    题目描述 糖果雨 [问题描述] 有一个美丽的童话:在天空的尽头有一个"糖果国",这里大到摩天大厦,小 到小花小草都是用糖果建造而成的.更加神奇的是,天空中飘满了五颜六色的糖 果云, ...

最新文章

  1. java 怎么让一个jlabel和一个jtextfield在一行_今天小哥大家分享一下Java编程语言的第一个程序应该怎么样去写...
  2. braintree php 开发,php – 如何为使用Braintree和静态方法调用的端点编写集成测试...
  3. java 监听 变量_[Java学习小记]使用PropertyChangeSupport来监听变量的变化
  4. 响应式框架Bootstrap栅格系统
  5. R语言编程基础(2)
  6. 再议Python协程——从yield到asyncio
  7. 软件工程项目需求分析
  8. Algorithm——何为算法?
  9. GIS产品开源大集合
  10. 【新品重磅发布】FOHEART·HF1面部表情捕捉头盔
  11. 默认关闭IDEA的注释doc的rendered view模式
  12. 112358序列c语言,112358(112358的规律是什么)
  13. 高能手办团服务器维护了,高能手办团11月27日更新了什么 11月27日更新维护详情...
  14. html语言div怎么使用,什么是div标签?HTML中div标签怎么使用?
  15. dof景深matlab,CG制作景深(DOF)的方法
  16. 什么是UI Path?
  17. 【附源码】计算机毕业设计java羽毛球场地管理系统设计与实现
  18. 一个基于GPRS模块及云后台的开源系统--Luat
  19. 如何通过TXT文件批量生成EAN14条码
  20. 计算机学习路线+必读书籍

热门文章

  1. Java简单的用户登录界面+MySQL
  2. 传B站35岁女副总裁嫁24岁男主播!资产80亿,任职45家企业
  3. JavaScript 学习笔记 - 6 表单处理
  4. JAVA修炼秘籍(番外篇)第二章:《图书馆管理系统》
  5. java导出excel 打不开,poi 通过浏览器导出excel文件打不开
  6. pcm to g711
  7. java主函数的写法_函数主函数调用函数怎么写
  8. 7.对齐输出李明同学的三门课成绩
  9. 基于javaweb+SSH校园二手交易平台
  10. 任务 04、Midjourney提示词使用初指南:AI绘画不再难