题目链接:poj 3237 Tree
题目大意:给定一棵树,三种操作:
CHANGE i v:将i节点权值变为v
NEGATE a b:将ab路径上所有节点的权值变为相反数
QUERY a b:查询ab路径上节点权值的最大值。
解题思路:树链剖分,然后用线段树维护节点权值,成端更新查询。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 10005;
const int INF = 0x3f3f3f3f;
int id, far[maxn], son[maxn], cnt[maxn], idx[maxn], top[maxn], dep[maxn];
int N, en, first[maxn], ju......
阅读全文