此题应用线段树的方法非常巧妙。没做过真的难想得出是这么想的。
是一个逆向思维的运用。
其实一看到这道题目我就想到要运用逆向思维的了,但是就是没那么容易想通的。
思路:
1 要从后面往前更新线段树
2 线段树记录的是当前区间还剩下多少个记录空间
3 因为后面的插入会使得前面的插入往后退,那么前面插入的下标如果大于前面可以插入的空间,就需要往后退了。
好难理解的操作。仔细观察一下下面up...
分类:
其他好文 时间:
2014-06-19 12:54:26
阅读次数:
248
感觉今天的状态有点不好。。。老是在小地方犯错。。。
简单的记录一下就好。
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
#define maxn...
分类:
其他好文 时间:
2014-06-19 09:53:25
阅读次数:
211
线段树记录当前区间是哪一个长方形在覆盖。
然后根据每一条线更新线段树。
如果是左边的边,那么把区间更新成当前长方形。
否则,把区间更新成当前长方形的前驱。
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(linker, "/STACK:1024000000,102...
分类:
其他好文 时间:
2014-06-16 11:26:00
阅读次数:
161
一、树状数组树状数组是一个优美小巧的数据结构,在很多时候可以代替线段树。一句话概括就是,凡是树状数组可以解决的问题,线段树都可以解决,反过来线段树可以解决的问题,树状数组不一定能解决。树状数组英文名称为Binary
Index Tree,直译过来就是二进制索引树,我觉得二进制索引树更能说明其本质。树...
分类:
其他好文 时间:
2014-06-16 07:24:03
阅读次数:
190
上次的湘潭赛的C题,用线段树敲了下还是WA,不知道为何,我已经注意了处理相同数据,然后他们当时用的RMQ。所以学了下RMQ,感觉算法思想是一样的,RMQ用了DP或者是递推,由单个数到2^k往上推,虽然有部分重叠的,也没关系,因为RMQ是求区间最值嘛然后这道题目,要把出现次数化为最值,构造一个新的数组...
分类:
其他好文 时间:
2014-06-16 06:21:13
阅读次数:
248
链接线段树的水题,拿来学习一下splay.本题涉及到求最大值以及单点更新,折腾了许久,差不多把splay搞明白了。按位置建树,按位置是一颗排序二叉树,对于区间的操作非常方便,每次操作都将需要的结点转自根的右孩子的左孩子,因为加了2个结点,一个最小的,一个最大的,据说是为了防止越界。这题只有单点,所以...
分类:
其他好文 时间:
2014-06-14 19:58:36
阅读次数:
224
一、线段树线段树既是线段也是树,并且是一棵二叉树,每个结点是一条线段,每条线段的左右儿子线段分别是该线段的左半和右半区间,递归定义之后就是一棵线段树。例题:给定N条线段,{[2,
5], [4, 6], [0, 7]}, M个点{2, 4, 7},判断每个点分别在几条线段出现过?1、构建线段树2、处...
分类:
其他好文 时间:
2014-06-13 18:43:01
阅读次数:
262
新学的,其实吧,就那么回事....看了几天,splay处理序列问题,真的非常厉害,翻转,插入,删除,线段树实现不了的功能,splay用起来很方便。POJ
3580 SuperMemo这题基本就是检验模板的题,各种操作都有,错了好多次,发现以前写的代码有错了的,数据水点,给水过了,注意pushup。S...
分类:
其他好文 时间:
2014-06-13 14:36:52
阅读次数:
213
108685842014-06-11
18:26:52Accepted17541078MS3156K1430 BG++little_w【题解】:【代码】: 1 #include 2 #include
3 #include 4 #define Mod 1000000007 5 #define L...
分类:
其他好文 时间:
2014-06-12 09:15:35
阅读次数:
198