[TOJ] 3148 Light Switching -- 线段树
来源:互联网 发布:达内 西安java培训 编辑:程序博客网 时间:2024/05/20 09:45
优化了好久好久..开始超时的程序在好多OJ交都过了,TOJ时间卡的太紧了。
开始有n个灯,标号为1~n。m个操作。
操作有更改某一段灯的状态(开变关,关变开)和查询某一段亮着的灯的个数 。
灯开始都是关着的。
我开始很纠结,怎么更改一段的灯的状态呢?有的是开,有的是关,那不是要更新到叶子结点了?
想了两天终于想通其实不需要记录灯的状态,只需要知道一个区间被改过多少次就行了。
一个区间的亮灯数是sum,区间里一共有灯L个。那这个区间被改之后亮灯数就变成了L - sum。
而且如果一个区间被改了偶数次,和没改一样;被改奇数次和改了一次一样。
那就很简单了,只要到了被范围完全覆盖的区间,就改那个区间的sum和info(记录更改次数的奇偶)然后直接返回。只要经过info记录为奇数次的区间就更新它的子区间。查询时只要直接查询区间的sum就行了 。
Show Code - Run ID 952408
Submit Time: 2010-08-06 18:22:37 Language: GNU C Result: Accepted
Pid: 3148 Time: 0.84 sec. Memory: 5360 K. Code Length: 1.8 K.
- [TOJ] 3148 Light Switching -- 线段树
- 【USACO 2008 Nov Gold】 3.Light Switching(lites 开关灯) 区间修改线段树
- EOJ 2525 Light Switching
- hdu3533 Light Switching Game
- Puzzle - Light Bulb Switching
- POJ 3533 Light Switching Game
- [TOJ]3243 Blocked Road --线段树
- TOJ 1650 Flying Right -- 贪心 + 线段树
- TOJ 1550 Fiber Communications -- 枚举 + 线段树
- 线段树学习——TOJ 练习
- 洛谷P2826[USACO08NOV]光开关Light Switching
- TOJ 1706: City Horizon -- 线段树,平衡树
- [TOJ] 3243 Blocked Road -- 树状数组、线段树
- TOJ 4325 RMQ with Shifts / 线段树单点更新
- TOJ 1611 Moo University - Financial Aid -- 线段树 + DP
- TOJ 1600 Fence Obstacle Course -- 线段树,链表
- 【DP+线段树】 hdu3698 Let the light guide us
- hdu 3275 Light 很好很好的线段树 收获丰富
- VS 快捷键大全
- 解决复制文件时出乱码
- 很无语
- tasklist命令查看DLL快速查找木马
- 就做自己!
- [TOJ] 3148 Light Switching -- 线段树
- IE浏览器打不开网页解决方法之一
- 自定义嵌套VIEW
- 删除注册表项,键值,服务
- subvesion说明文档
- sicp 2.2 习题
- 一些相关内容
- 续-当虚拟机的配置文件不小心删掉,如何恢复
- QTP的FrameManager测试框架解析