A
用时:30min
问题类型:构造
想到一个序列首位一开始必然只出现一次。
第二项必然出现两次,然后不断去找即可,想了几种假解花费了 20min 左右。
B
用时:30min
问题类型:最短路
翻过来考虑,这样第 \(d_{i}+1\) 次到点 \(i\) 才能真正确定状态,因为怪兽肯定贪心的选最小的边封。
总结:学到了这种封边的处理套路。
D
用时:30min
问题类型:最短路
考虑枚举最大的那条边,用 Dij 求出起点到 \(x\) 的最大边权最小和终点到 \(x\) 的最大边权最小,如果最大边的端点的这两个值的 max <= 这条边的权值,则更新答案。
总结:对于这类有关 max 的题,枚举最大值是很常见的套路。
F
用时:1h
问题类型:拓扑排序、容斥
考虑求出以 \(i\) 结尾的链数量 \(f\) 和以 \(i\) 开头的链数量 \(f2\),删掉点 \(i\) 减去 \(f_if2_i\),但这样算会有重复。
考虑将删的点按拓扑序排序,预处理点 \(i\) 开头 \(j\) 结尾的链,从小到大容斥即可。
总结:如果统计的方案有重复,可以考虑容斥。
H
用时:30min
考虑每一个泥地要么被,横着的木板盖,要么被竖着的木板盖,把木板编号求出来,对每个点,横着的木板编号向竖着的木板连边,跑二分图最小点覆盖即可。
总结:这种每个点有两种状态的题,可以往二分图的方向去想。
I
用时:1h
假设两棵树的每条边都选,对于有冲突的点连边,跑最小割即可。
总结:如果一道题需要删掉一些点使得满足条件,可以考虑最小割。
