E. Misha and LCP on Tree Problem's Link Mean: 给出一棵树,每个结点上有一个字母。每个询问给出两个路径,问这两个路径的串的最长公共前缀。 analyse: 做法:树链剖分+后缀数组. 记录每条链的串,正反都需要标记,组成一个长串. 然后记录每条链对应的串在大串中的位置,对大串求后缀数组,最后询问就是在一些链
题目链接:Clarke and room #include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define ls ( o << 1 )#define lson ls , l , m#define rs ( o << 1 | 1 )#define rson rs , m + 1 , r#define rt
题目链接:hdu 4897 Little Devil I 题目大意:给定一棵树,每条边有黑白两种颜色,初始都是白色,现在有三种操作: 1 u v:u到v路径上的边都取成相反的颜色2 u v:u到v路径上相邻的边都取成相反的颜色(相邻即仅有一个节点在路径上)3 u v:查询u到v路径上有多少个黑色边 解题思路:树链剖分,用两个线段W和L维护,W对应的是每条的黑白情况,L表示的是每个节点
题目链接:spoj 375. Query on a tree 题目大意: poj 3237的简化版,用同一份代码都能过。 解题思路:略。 #include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 10005;const int INF = 0x3f3
题目链接:hdu 3966 Aragorn's Story 题目大意:给定一个棵树,然后三种操作 Q x:查询节点x的值I x y w:节点x到y这条路径上所有节点的值增加wD x y w:节点x到y这条路径上所有节点的值减少w 解题思路:树链剖分,用树状数组维护每个节点的值。 #pragma comment(linker, "/STACK:1024000000,1024000000