http://poj.org/problem?id=2828
学到的思维:
1、变化的或者后来的优先影响前面的,那么从最后一个往前看,最后一个就成了 确定的, 并且后来的也可以确定----如果从前往后,所有的随时都不是确定的
2、线段树叶子节点直接维护区间(线段)信息,非叶子节点v维护的是以v为树根的整个子树的信息,那么假设父节点rt信息为[l,r]那么左子树维护[l,mid],右子树维护[...
分类:
其他好文 时间:
2014-07-31 09:53:06
阅读次数:
181
假如F[1] = a, F[2] = B, F[n] = F[n - 1] + F[n - 2]。写成矩阵表示形式可以很快发现F[n] = f[n - 1] * b + f[n - 2] * a。 f[n] 是斐波那契数列也就是我们如果知道一段区间的前两个数增加了多少,可以很快计算出这段区间的第k个...
分类:
其他好文 时间:
2014-07-31 09:47:46
阅读次数:
286
题目链接:http://poj.org/problem?id=3264题目大意:在给定一堆牛的数量以及其高度的时候,每次给定一段区间,求这个区间内最高的牛和最矮的牛的高度之差为多少。这道题目用线段树能快速的求解,因为此处不涉及更新,所以无需写update函数不同于之前只定义一个tree数组,这回我们...
分类:
其他好文 时间:
2014-07-31 09:47:16
阅读次数:
210
点更新用法很巧妙的一道题。倒序很容易的找到该人的位置,而update操作中需要不断的变化下标才能合理的插入。看了别人写的代码,学习了。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const ...
分类:
其他好文 时间:
2014-07-31 09:43:46
阅读次数:
182
题意:一个初始为0的数组,支持三种操作:1、向第k个数添加d,(|d| 2 #include 3 #include 4 using namespace std; 5 #define maxn 100005 6 #define lson l, m, rt= x - fib[a-1]) re...
分类:
其他好文 时间:
2014-07-31 02:52:55
阅读次数:
254
题意:有一些平行于y轴的线段 ,两条线段称为互相可见当且仅当存在一条水平线段连接这两条 与其他线段没交点。 最后问有多少组 3条线段,他们两两是可见的。思路:线段树,找出两两可见的那些组合,最后暴力判断。#include#include#include#include#include#include...
分类:
其他好文 时间:
2014-07-31 02:24:05
阅读次数:
224
题意:对一串数字进行抑或某数,和某数,或某数,统计某区间和的操作。思路:因为化成二进制就4位可以建4颗线段树,每颗代表一位二进制。and 如果该为是1 直接无视,是0则成段赋值为0;or 如果是0 无视,是1则成段赋值为1;xor 成段亦或,1个数和0个数交换;sum 求和;#include#inc...
分类:
其他好文 时间:
2014-07-31 02:22:55
阅读次数:
258
UVA 1232 - SKYLINE
题目链接
题意:按顺序建房,在一条线段上,每个房子一个高度,要求出每间房子建上去后的轮廓线
思路:线段树延迟更新,一个setv作为高度的懒标记,此外还要在开一个cover表示当前结点一下是否都为同一高度
代码:
#include
#include
#include
using namespace std;
#define ...
分类:
其他好文 时间:
2014-07-31 00:06:55
阅读次数:
246
hdu 4893 Wow! Such Sequence!(线段树功能:单点更新,区间更新相邻较小斐波那契数)...
分类:
其他好文 时间:
2014-07-31 00:04:15
阅读次数:
269
UVA 11402 - Ahoy, Pirates!
题目链接
题意:总的来说意思就是给一个01串,然后有3种操作
1、把一个区间变成1
2、把一个区间变成0
3、把一个区间翻转(0变1,1变0)
思路:线段树搞,开一个延迟标记当前操作即可,注意几种状态间的转变方式即可
代码:
#include
#include
#include
using namesp...
分类:
其他好文 时间:
2014-07-30 23:54:35
阅读次数:
268