传送门 password:12345ssdlh
T1
贪心
T2
bfs啊
枚举现将所有y<=1000的点加入一个队列,dis设为1
然后往后更新就好了
代码
T3
一个差分
先将修改边转化为修改点,即边<fa,son>++定义为d[son]++
然后树上差分,链(i,j)++相当于d[i]++,d[j]++,d[lca(i,j)]-=2
查询边<fa,son>相当于查询son的字数大小
由于同一子树dfs序连续,所以维护dfs序就可以了
代码
T4
bfs……
还要加优化
就是现在加入的那个点如果他的dis比队头的dis还小,就把他放入队头,否则放入队尾
代码
T5
区间dp
设dp[l][r][0/1]表示在l---r这段区间取完左/右端点后所需的最短时间
那么,可以得到dp式
dp[l][r][0/1]=min(max(dp(l-1,r,0)+abs(p[l-1].pos-p[l/r].pos),p[l/r].tim),max(dp(l,r+1,1)+abs(p[r+1].pos-p[pl/r].pos),p[l/r].tim))
代码
T6
带权并查集
以最下面的节点为根节点,维护点到根的距离,同时维护点集大小即可
代码
T7
tdp
设dp[u][k]表示以u的子树中取k个含u连续节点最多需要断掉多少条边
根据题意
dp[u][k]=min(dp[to1][k1]+dp[to2][k2]+......+dp[ton][kn])
然后用一些晓手段维护一发就好了
代码
原文:https://www.cnblogs.com/yanghaokun/p/11402614.html