线段树
hudatangqi
这个作者很懒,什么都没留下…
展开
-
hdu 1698 just a hook
这道题目就是考察的线段树求和的算法,比较简单。 注意事项: 1、如果一个区间的值都相同,则用cover=value标记; 2、如果区间的值原来都相同,现在要插入一个,则这个区间的cover值就为-1(用来标记这个区间的值不唯一) 3、最后求总和的时候,用count函数求和。 #include using namespace std; struct Nod原创 2011-11-26 11:34:25 · 134 阅读 · 0 评论 -
hdu 4107 Gangster
解题思路: 这一题与前面做的线段树的题目有所不同的就是这个子节点不一定一致(有可能子节点有节点的num值小于P),这样就不好进行优化,这里引用max,min两个变量用来储存该节点的子节点的最大值和最小值。若max=P,就可以+2*c,这样子节点就可以不用进行+c操作了,这样就可以进行偷懒了。 #include using namespace std; #define INF 20原创 2011-11-27 11:09:12 · 144 阅读 · 0 评论 -
hdu 2795 Billboard
这一题可以用线段树来做,就是最简单的线段树。 #include using namespace std; #define MAX 200010 int w,fine; struct Node { int r,l,mid,num,max; }node[3*MAX]; int Max(int a,int b) { return a>b?a:b; } void i原创 2011-11-30 23:12:31 · 119 阅读 · 0 评论