LightsTime Limit:8 Seconds Memory Limit:131072 KBNow you haveNlights in a line. Don't worry - the lights don't have color. The only status they have i...
分类:
其他好文 时间:
2014-11-08 13:14:54
阅读次数:
233
题意:m条操作指令,对于指令 a b 表示取出第a~b个元素,翻转后添加到排列的尾部。水题卡了一个小时,一直过不了样例。 原来是 dfs输出的时候 忘记向下传递标记了。 1 #include 2 #include 3 #include 4 #include 5 using name...
分类:
其他好文 时间:
2014-11-07 16:49:34
阅读次数:
185
LooploopXXX gets a new toy named Looploop. The toy has N elements arranged in a loop, an arrow pointing to one of the elements, and two preset paramet...
分类:
其他好文 时间:
2014-11-07 14:42:19
阅读次数:
290
题目链接:http://poj.org/problem?id=3580题目大意:对一个序列进行以下六种操作。输出MIN操作的结果。解题思路:六个操作,完美诠释了伸展树有多么吊。注意,默认使用Lazy标记,在pushdown中维护。ADD操作:为x~y元素加一个d值。首先用split切出x~y元素。然...
分类:
其他好文 时间:
2014-10-17 02:54:23
阅读次数:
312
题目大意:维护一种数据结构,它可以:
1.移动光标
2.在光标之后插入一段字符串
3.删除光标之后的n个字符
4.输出光标之后的n个字符
5.移动光标
思路:Splay,没什么特别的。但是有几个需要注意的地方。1.题中说:delete操作不会越界。但是其实有可能会越界,比如样例就越界了。。
2.输出的时候一定不要偷懒。我刚开始写的时候就把输出写成nlogn输出的了,然后果断T...
分类:
其他好文 时间:
2014-10-02 10:21:32
阅读次数:
232
题目大意:有一个很长的带颜色的项链,要求你快速的维护一种数据结构,他可以:
1.把序列的后k个放在前面。
2.将区间2~cnt的珠子翻转。
3.将位置i和位置j的珠子互换。
4.将区间i到j染色成k
5.输出整个序列的颜色块的个数
6.输出从i到j的颜色块的个数。
思路:Splay。有些不好处理的是要时刻想着这是一个环,所以所有的计算颜色块的个数的时候要考虑收尾的颜色是否相同...
分类:
其他好文 时间:
2014-09-25 18:13:57
阅读次数:
471
#include
template
class Splay_Tree
{
public:
Splay_Tree();
bool find(const T& val);
void insert(const T& val);
void del(const T& val);
private:
typedef struct tagNODE
{
T data;
struct tag...
分类:
其他好文 时间:
2014-09-17 13:40:32
阅读次数:
219
题目链接:uva 1479 - Graph and Queries
题目大意:有一张m条边的无向图,每个节点都有一个权值,现在有若干个操作,
D x:删除ID为x的节点Q x k:计算与节点x联通的节点当中,第k大的权值C x v:把节点x的权值改为v
解题思路:把所有操作反过来处理,先执行所有的D操作,获得最终的图,然后逆操作的时候对于D来说即为合并操作,Q和C则是查询和修改操...
分类:
其他好文 时间:
2014-09-16 10:46:50
阅读次数:
282
题目链接:uva 11922 - Permutation Transformer
题目大意:给定一个序列,每次操作取出区间a~b,翻转后放到末尾,随后输出序列。
解题思路:就是伸展树,对于每个节点设一个flip,表示是否为翻转转态。每次将a旋转到根,然后分裂,再将b翻转到根,分裂,然后将mid翻转放到最后。
#include
#include
#include
using n...
分类:
其他好文 时间:
2014-09-15 21:22:59
阅读次数:
233
一.手写二分#include int a[5] = {5, 3, 3, 2, 1};template inline T bfind(T r, T key){ T l = 1, m, k, flag = 0; while(l != r) { m = (r + l) / ...
分类:
其他好文 时间:
2014-09-11 01:05:11
阅读次数:
293