摘要:
SPOJ_2798 如果用link-cut-tree写的话,只要维护col(节点的颜色)和sum(子树中black节点的数量)两个标记即可。染色的时候将对应节点splay到根然后修改,查询的时候先进行access(v)的操作,之后找到这棵splay的根再递归查找即可,如果根结点的sum值为0,则输出-1。#include<stdio.h>#include<string.h>#define MAXD 100010#define MAXM 200010int N, Q, q[MAXD], first[MAXD], e, next[MAXM], v[MAXM];struct 阅读全文
posted @ 2012-06-13 12:15
Staginner
阅读(260)
评论(0)
推荐(0)
摘要:
SPOJ_913 这个题目应该也可以树链剖分去做,只不过感觉在KTH这个操作还是用link-cut-tree更好写一些。#include<stdio.h>#include<string.h>#define MAXD 10010#define MAXM 20010int N, q[MAXD], first[MAXD], e, next[MAXM], v[MAXM], w[MAXM];struct Splay{ int pre, ls, rs, size, sum, key; bool root; void update(); void zig(int ); void za 阅读全文
posted @ 2012-06-13 10:26
Staginner
阅读(1487)
评论(0)
推荐(0)
浙公网安备 33010602011771号