摘要:
#include#include#include#define ls c[x][0]#define rs c[x][1]using namespace std;const int maxn=300010;int n,m; struct LCT{ int c[maxn][2],fa[maxn... 阅读全文
摘要:
话说bzoj上叫tree的题可真多... 题目大意:路径加,路径乘,路径求和,加边删边。 思路:动态树搞搞就行了,两个标记要注意。 #include#include#include#define ll unsigned int#define ls c[x][0]#define rs c[x][1... 阅读全文
摘要:
题意:给定一棵树,支持换根,路径权值覆盖,求子树最小。 思路:求子树?上树链剖分,但是换根怎么办?我们只能通过原有信息推出换根后的答案。换根不影响路径修改,所以只要考虑子树最小值的维护。 这里要分3种情况讨论 1:如果询问点是当前根,直接返回整棵树的最小值。 2:如果在原树中,当前根不在x的子树... 阅读全文
摘要:
题目大意:给定一个简单图,支持删边,每次询问两点间 最大边权值最小的路径。 思路:题目中权值在边上,而LCT维护的全值在点上,所以要先转化,对于连接x和y的第i条路径,把边变成第i+n个点,然后把权值放到边点上,所有真正的点权值赋为0,这也是维护边权的常用方法。接着就是一个性质:每次询问两点... 阅读全文
摘要:
2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 3271 Solved: 1262 [Submit][Status][Discuss] Description 给定一棵有n个节点的无根树和m个... 阅读全文
摘要:
题意:树上的NIM游戏,每次取出一条链,问先手是否有必胜策略。 思路:动态树or树链剖分维护链异或和,为0则没有,否则有。LCT死活就是TLE,代码就不贴了。 阅读全文
摘要:
题目大意:询问两点是否连通(反人类的是连通输no,不联通输yes...),单点权值修改,路径和。 思路:正常的动态树,搞搞就行了。#include#include#includeconst int maxn=30010;using namespace std;int n,m;char op[15... 阅读全文
摘要:
思路:动态树。把每个装置看成点,能弹到的装置连边,能弹飞的装置连到n+1号点,每个点点权设为1,这样问几次弹飞就可以转化为该点到n+1号点的路径的点权和。 #include#include#include#includeconst int maxn=200010;using namespace ... 阅读全文
摘要:
单点修改,询问链最大,链和,LCT和树链剖分都可以写,不过LCT就是慢.... LCT: #include#include#includeusing namespace std;const int maxn=30010;int n,m,u[maxn],v[maxn];char s[7];stru... 阅读全文
摘要:
#include#include#includeusing namespace std;const int maxn=10010;int n,m;char s[10];struct node{ int c[maxn][2],f[maxn],rev[maxn]; bool isroot(int x... 阅读全文