2024.11.11 总结
For:2024.11.11
继续补集训基础题。。
上午
树的重心知识点 :
0. 怎么求?树形 \(dp\) 记录子树大小
1. 重心 \(<=>\) 该点的所有子树大小均不超过树的一半
2. 如果树的重⼼不唯⼀,则只有⼀种情形:\(>-o-o-<\)
3. ⽤⼀条边将两棵树连接起来,新的重⼼在原来分别的重⼼的连线上。
4. 如果⼀个树增添或删去⼀个叶⼦,则树的同⼀个重⼼最多移动⼀个节点。
5. 树中所有点到某个点的距离和中,到重⼼的距离和是最⼩的。
P1395 会议
树中所有点到某个点的距离和中,到重⼼的距离和是最⼩的。所以只需求树的重心即可。
P1364 医院设置
直接用树形 \(dp\) 求出以 \(1\) 为根时的答案,然后进行换根 \(dp\) 即可,本质上是在求带权树的重心。
Kay and Snowflake
第一次 \(dfs\) 求子树大小,第⼆次 \(dfs\) 求树的重⼼的时候求出每个节点⼦树的重⼼,由树的重⼼的性质,新重心在两个旧重心连线上,只需从⼦节点⼦树重⼼位置往上枚举即可,由于找重心深度单调增,每个点只会额外多访问一次,均摊 \(O(n)\)
Link Cut Centroids
比较好猜的结论,如果原先重心唯一,随便删边再加回来,不唯一 只能是 \(>-o-o-<\) 的情况,删⼀个叶节点加到另⼀个重⼼上即可。通过树的重心子树大小不超过树的一半的结论,可证明重心唯一。
P6175 无向图的最小环问题
考虑 \(floyd\) 中类似于松弛的转移,\(i-j-k\) 即为构成环,\(floyd\) + 求最小环。
P2419 [USACO08JAN] Cow Contest S
一头奶牛的排名确定等价于与其它每头奶牛的大小关系确定,\(floyd\) 做传递闭包,最后统计答案即可。
下午
P1938 [USACO09NOV] Job Hunt S
按题意建图,\(spfa\) 跑最长路,判正环。
P5905 【模板】全源最短路(Johnson)
先跑一边 \(spfa\) 求出超级源点到每个点的距离 \(h[i]\) 然后将边权修改为 \(w+h[u]-h[v]\) 跑 \(n\) 遍 \(dijstla\) 复杂度 \(O(mnlogm)\)
突然发现 所有最短路算法的结构体都可以用pair代替,之前手写排序结构体麻烦了。
P1330 封锁阳光大学
二分图染色
GSS1 - Can you answer these queries I
线段树经典题,每个节点维护,\(l,r,lx,rx,sum,mx\) 代表左右端点,前后缀最大区间和,区间总和,最大区间和,合并时要注意新的前后缀是:一个节点的区间总和加上另一个区间的最大前后缀,或者前后缀,取这两者中的较大值。
晚上
GSS3 - Can you answer these queries I
加个单点修改函数。
P3831 [SHOI2012] 回家的路
分层图最短路,且只有换乘车站和起终点有用,将每个点拆成横与纵两个方向,\(1~m\) 为横,\(m+1~2m\) 为纵,实现直接建边很麻烦,可以分别按 \(x,y\) 为关键字排序,只在相邻节点连边,然后在每个点 \(i\) 与 \(i+m\) 间连换乘边,起终点换乘时间为0。
P1993 小 K 的农场
其中 \(a=b\) 可拆成 \(a\leq b\cup b\geq a\) 然后直接跑差分约束,但是这道题有问题,建边数组大小只开到2倍会 \(TLE\),直接开了5倍

浙公网安备 33010602011771号