20231015
20231015 NOIP#21总结
时间安排
7:50~8:20
看题,\(A\) 一眼切了,\(B\) 会一点暴力,\(C,D\) 没有想法。
8:20~8:50
写 \(A\) 的正解。
8:50~9:50
写 \(B,C\) 的暴力和特殊性质。
9:50~11:00
一直在想 \(B\),想出来了 \(B\) 的正解写了,但是特判和分段挂了。
11:00~11:50
写了 \(D\) 的爆搜,然后一直在 (罚坐) 想 \(C,D\) 但一点多的都不会。
总结反思
- 为什么不拍 \(B\)
题解
A.最短路
超级源点板子。
B.组合
对于一个极大的包含 \(k\) 个 \(1\) 的长度为 \(n\) 的区间,方案数为 \(C_n^k\)。
但是区间会有重合的部分,设第 \(i\) 的段和第 \(i+1\) 个段相交的长度为 \(l\),有 \(x\) 个 \(1\),则应减去 \(C_l^x\)。若多个区间重合,只需要考虑相邻的两个区间即可,因为多次重合的区间会在考虑后面的段时被一起减掉。
C.最短路径图
建出从 \(S\) 到 \(T\) 的最短路径图,并预处理 \(U,V\) 到所有点的单源最短路,答案即为 \(\min\{dis(U,x)+dis(y,V)\}\) 其中 \(x,y\) 位于最短路径图的同一条链上。最短路径图是一个 \(DAG\),这个问题可以通过对其做 \(DP\) 解决。代码
D.点分治
设 \(f[x]\) 表示离 \(x\) 最近的魔法使的点(后面称为坏点)到 \(x\) 的距离。则对于满足 \(dis(u,v)<f[v]\) 的点 \(v\),\(u\) 都可以走到 \(v\) 然后不动,除非 \(u\) 本身就是坏点,所以 \(u\) 节点的答案就是 \(\max_{dis(u,v)<f[v]}\{f[v]\}\)。
即对于任意点 \(u\),将所有距离 \(u\) 点小于 \(f[u]\) 的节点答案都对 \(f[u]\) 取 \(\max\),这个可以通过点分治解决。代码