昨天出去浪,今天发烧,考试虚的一批,暴力挂了2个,T3的性质猜出来了但是只打了50分,没有时间打满分
T1
假设现在删蓝树,in[x]代表dfs到x的最小时间戳,out代表最大
那么一条原先删的边(p,q)会让蓝树里的(x,y)删掉当:
(假设dfn[x]<dfn[y],dfn[p]<dfn[q])
1>in[q]=<in[x]<=out[q]&&in[y]>out[q]
2>in[q]=<in[y]<=out[q]&&in[y]<in[q]
直接拿线段树维护即可
T2
首先点分治
之后一条链的前缀和和另一条进行合并
那么一定一个是它到根里最大,一个是最小
之后我就不会了。。。
T3
结论是每个数不会超过两个质因子
并且有两个的话一个是小于根号一个大于根号
所以先把ans初始化为都选一个的
之后S向小于根号的连边其他的向T的连边,容量为1,代价为0
小于根号的向大于根号的连容量为1代价为calc(i,j)-calc(i)-calc(j)的边
跑一个最大费用最大流即可