线段树
sqplfh
这个作者很懒,什么都没留下…
展开
-
HDU 1166 敌兵布阵
我是用线段树解决的,也可以用树状数组解决。以前看别人的代码写过一个有离散化的线段树,现在印象模糊了,就在拾起来线段树。build()建树函数insert()修改cnt的函数,递归时的每一段都包含该段,所以他们的cnt都一起改变。query()查询函数,一开始直接返回的是区间[i,i+1]的值。完全没抛弃了线段树的精髓。ORZ。。#include #define MAX 50000 using namespace std; struct node{ int l,r,mid,cnt; }tree[原创 2011-01-29 20:10:00 · 358 阅读 · 0 评论 -
FOJ 1608 Huge Mission
线段树,做了两个多小时。我错了。受到hdu1698 Just a Hook的启发,就开始试着解决这题。建议先做完hdu1698,再做这题。题目大意就是说,给你M个子区间,和这个区间的效率。问你总区间的最大效率是多少。#include #define MAX 50000 using namespace std; struct node{ int l,r,mid,val; bool cov; }tree[MAX*4]; void build(int l,int r,int num) {原创 2011-01-30 22:59:00 · 623 阅读 · 0 评论 -
FOJ 1962 新击鼓传花游戏
嗯,线段树的操作。点的增加,删除,和查询。有意思的是,增加和查询的是第K小项。O(∩_∩)O~ 写了好久,貌似发呆了一大半时间。剩下的一大半时间,跑去踢球了。ORZ。ORZ。。我爱走神,偶也。贴个,我是如何找到第k小元素的函数。int query(int num,int k) { if(k==tree[num].r-tree[num].l) return tree[num].l+k-1; if(k原创 2011-01-31 15:35:00 · 671 阅读 · 0 评论 -
PKU 2777 Count Color
<br />题目大意就是不断更新区间[i,j]的颜色,不断询问区间[i,j]有几种颜色。<br /> <br />在insert函数中一个地方写错了,导致WA了好几次。<br /> <br />还有就是,写着写着忘记判断A是否大于B了。无奈。ORZ。。ORZ。。<br /> <br />#include <iostream> #define MAX 100000 using namespace std; struct node{ int l,r,mid,cov;//cov=-1,表示未被覆盖 }原创 2011-01-31 19:49:00 · 392 阅读 · 0 评论 -
PKU 2528 Mayor's posters
<br />本题poster的宽度很大,而poster的数量很小。<br /> <br />所以,离散化,保证不会TLE。<br /> <br />离散完之后最多有20000个点。所以树的结构数组要开80000。<br /> <br />一开始,由于只会建区间树,导致很多细节处理的不清楚,百度了别人代码,发现不太容易懂。<br /> <br />最后,学了下怎么建立点树。然后,果断A了。<br /> <br />//呜呜,不会点树的悲剧,做了3个小时,还好思路都对,算是一种安慰吧。。 //表示,有代码中的原创 2011-02-01 15:27:00 · 417 阅读 · 0 评论 -
FOJ 1968 Twinkling lights III
<br />线段树,嗯,嗯。<br /> <br />本题有5个操作,并且对象都是区间:1. 开灯 2.关灯 3.把开的关,关的打开 4.询问区间有几盏灯亮着 5.询问区间最多连续亮着几盏灯<br /> <br />结构体里的cov是否完全覆盖,-1表示未完全覆盖,0表示区间的灯都暗着,1表示区间灯都亮着。<br /> <br />#include <iostream> using namespace std; #define MAX 2000000 #define LL(x) (x<<1) #de原创 2011-02-15 21:37:00 · 474 阅读 · 0 评论 -
HDU 3911 Black And White
有原题的题。 自己写的时候,一直超时。悲催啊。 然后,上网看了下别人的解题报告,发现需要一个标记,用来表示是否需要翻转。这样,就不用每次都更新到连续的区间。(避免复杂度变高) 果断,给力啊。 #include using namespac原创 2011-08-07 12:55:29 · 568 阅读 · 0 评论 -
1656 How many different numbers
呜呜,这题做了好久啊。4个月吧。纠结。 以前,自己写的代码和百度来的代码都超时。纠结。 今天,看了下一道类似题的解题报告,就自己动手写了遍。1A,~\(≧▽≦)/~ 具体思路:先把N个保存下来,进行离散,然后用就可以用flag记录某个数前面出现的位置,再把询问保存下来,按右原创 2011-10-02 21:39:58 · 504 阅读 · 0 评论