区间翻转 一脸Splay。第一次做区间翻转。一开始懒惰标记表示当前这可子树都需要翻转。这样就有个问题:旋转的状态的不一定是正确的(rotate传的参数不一定正确)。然后参考ac代码。联系线段树的lazy标记,每次跟新某个区间的时候,该线段区间肯定要先跟新,再在改区间节点打上标记,表示后面的子区间节点...
分类:
其他好文 时间:
2014-09-07 12:16:05
阅读次数:
327
每次来的如果是人,且宠物数不为零,就从宠物中选出一个与其差距最小的,累加答案;若为零,就把他放入另一个集合里。如果是宠物,则同上。各种平衡树都可过,我蛋疼地用了pb_ds。Code: 1 #include 2 #include 3 #include 4 using namespace std; 5 ...
分类:
其他好文 时间:
2014-09-06 16:04:53
阅读次数:
1020
题意:见下图
传说级别的NOI数据结构神题,像我这种弱渣花了一下午的时间才A掉,最后发现竟然是边界值的问题没处理好。。
这个题对Splay的所有操作基本是全了。
插入:新建一颗Splay Tree,然后把对应节点Splay到根的右儿子上,再把新建的树连上。
删除:把要删除的区间Splay到根的右儿子的左儿子上,递归free掉。(这里可以用数组优化,可以避免递归free节...
分类:
其他好文 时间:
2014-09-06 09:48:03
阅读次数:
242
1500: [NOI2005]维修数列
Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 6366 Solved: 1910
[Submit][Status]
Description
Input
输入文件的第1行包含两个数N和M,N表示初始时数列中数的个数,M表示要进行的操作数目。第2行包含N个数字,描述初始时的数列。以下...
分类:
其他好文 时间:
2014-09-04 19:14:50
阅读次数:
213
1208: [HNOI2004]宠物收养所
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 4352 Solved: 1645
[Submit][Status]
Description
最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠物,阿Q根据领养者...
分类:
其他好文 时间:
2014-09-03 18:16:57
阅读次数:
166
#include
#include
using namespace std;
typedef long long LL;
const int maxn = 100010;
int pre[maxn], ch[maxn][2], sz[maxn];
int root, top1;
int s[maxn], top2;//内存池
LL sum[maxn];
int val[maxn], add...
分类:
其他好文 时间:
2014-09-03 14:58:56
阅读次数:
264
最大子段和的各种形式
题解内附每道题的 题意 题目链接 思路
SPOJ 1043 GSS1
静态区间求个最大子段和,
题解
SPOJ 1577 GSS2
和1一样,区别是若区间内存在相同的元素,则该元素只计算一次。
离线一下然后使劲跑。。
题解
SPOJ 1716 GSS3
和1一样,就是要支持单点修改
题解
SPOJ 2713 GS...
分类:
其他好文 时间:
2014-09-02 14:12:45
阅读次数:
222
准备开学了囧,7、8月刷题记录,以后好来复习,并且还要好好总结!数据结构:splay:【BZOJ】1503: [NOI2004]郁闷的出纳员(Splay)【BZOJ】1269: [AHOI2006]文本编辑器editor(Splay)【BZOJ】1507: [NOI2003]Editor(Splay...
分类:
其他好文 时间:
2014-08-28 22:23:16
阅读次数:
413
http://poj.org/problem?id=2828一开始敲了个splay,直接模拟。tle了。。常数太大。。好吧,说是用线段树。。而且思想很拽。。(貌似很久以前写过貌似的,,)我们线段树维护的区间不再是人了。。而是这个区间剩余的的座位。。比如我现在要坐第一张,但是人已经坐了,即这个区间已经...
分类:
其他好文 时间:
2014-08-28 20:59:26
阅读次数:
1012
UVA 11922 - Permutation Transformer
题目链接
题意:给一个序列,每次操作选择(a,b),把(a,b)序列翻转之后加到末尾,求最终序列
思路:Splay的应用,多一个flip标记,在开头多一个虚拟的0结点,这样每次就利用Splay进行分裂合并即可
代码:
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-08-26 21:30:16
阅读次数:
405