关于主席树:主席树(Chairman Tree)是一种离线数据结构,使用函数式线段树维护每一时刻离散之后的数字出现的次数,由于各历史版本的线段树结构一致,可以相减得出区间信息,即该区间内出现的数字和对应的数量,由于在线段树内,左子树代表的数字都小与右子树,便可像平衡树一样进行K大询问。新建一颗树是\...
分类:
其他好文 时间:
2014-08-09 09:02:57
阅读次数:
350
思路:与我发表的上一遍求和的思想一样 只是现在变成求最大值而已
AC代码:
#include
#include
#include
#include
#include
using namespace std;
inline int Max(int a, int b)
{
return a > b ? a : b;
}
const int MAXN = 200001; // 区间范围
str...
分类:
其他好文 时间:
2014-08-09 02:39:46
阅读次数:
251
典型的给出区间任务和效益值,然后求最大效益值的任务取法。
属于一维DP了。
一维table记录的数据含义:到当前任务的截止时间前的最大效益值是多少。
注意, 这表示当前任务一定要选择,但是最终结果是不一定选择最后一个任务,故此最后需要遍历找到table数组的最大值,当然计算过程中使用一个数记录最终最大值也是可以的。
状态转移方程就是: tbl[i] = MAX({from tbl[0]->...
分类:
其他好文 时间:
2014-08-09 02:38:57
阅读次数:
234
题目大意:不断将放进来的数字插入要求位置,最后将他们的值按在其所在顺序排序简单的线段树问题,单点查询,从反向点一个个插入,线段树表示区间内还有多少空位,像找第几小的数那样自顶向下递归知道x==y代码: 1 #include 2 #include 3 #include 4 using names...
分类:
其他好文 时间:
2014-08-09 02:30:46
阅读次数:
274
解题报告
题意:
略
思路:
线段树成段更新,区间求和。
#include
#include
#include
#define LL long long
#define int_now int l,int r,int root
using namespace std;
LL sum[500000],lazy[500000];
void push_up(int root,int l,...
分类:
其他好文 时间:
2014-08-09 00:18:46
阅读次数:
470
因为将每个单位都作为一个最小单元的话会爆内存的所以,将海报的每个端点进行排序,将这些端点最为最小的区间。毕竟是刚刚接触线段树,理解起来还有些吃力,还是那句话,题做多了慢慢就好了。萌萌的AC代码君贴上。 1 //#define LOCAL 2 #include 3 #include 4 #...
分类:
其他好文 时间:
2014-08-09 00:09:16
阅读次数:
312
http://www.rqnoj.cn/problem/657https://www.vijos.org/p/1740P1740聪明的质检员请登录后递交标签:NOIP提高组2011[显示标签]描述小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n个矿石,从1到n逐一编号,每个矿石都...
分类:
其他好文 时间:
2014-08-08 23:48:16
阅读次数:
412
题目地址:POJ 3468
打了个篮球回来果然神经有点冲动。。无脑的狂交了8次WA。。居然是更新的时候把r-l写成了l-r。。。
这题就是区间更新裸题。区间更新就是加一个lazy标记,延迟标记,只有向下查询的时候才将lazy标记向下更新。其他的均按线段树的来就行。
代码如下:
#include
#include
#include
#include
#include
using n...
分类:
其他好文 时间:
2014-08-08 21:28:46
阅读次数:
272
/*
题意:
给出数组A,有以下几个操作:
1: AND(opn, L, R):把区间[L, R]中的元素A[i]改为A[i] & opn;;;;;;
2: OR(opn, L, R) :把区间[L, R]中的元素A[i]改为A[i] | opn;;;;;;;
3: XOR(opn, L, R):把区间[L, R]中的元素A[i]改为A[i] ^ opn;;;;;;;
4: SUM(L, R) ...
分类:
其他好文 时间:
2014-08-08 21:24:52
阅读次数:
305
与求面积并的差不多,但是这个与扫描的方向相同的情况不太好处理,如果扫描线离散化两次扫两遍其实也可以解决这个问题,但是这样无论在时间还是空间上稍微就有点浪费了啊。这里因为我是离散x坐标的所以对于平行于y轴的方向上的统计比较难统计。处理的方法是:标记区间左边的断点,和右边的断点,求出这个区间一共有多少个断点。就可以统计出平行于y轴的长度了。这里合并的时候需要判断右边的左区间和左边的右区间是否相同,如果...
分类:
其他好文 时间:
2014-08-08 21:22:16
阅读次数:
328