NOI2019 Day1
就准备这样面对你的 NOI 吗?
问题:
- 对拍,极限数据,构造数据。不要老觉得过了大洋里就可以万事大吉跑路了。
- 自己觉得写不完的东西,一定不要上来就写。
- 读题。读题。读题。实在改不了就每题都先写个暴力验证题意。
- 学会放题。一个题实在想不明白就退而求其次。保持冷静。
- 尽量一遍写对。
分数:\(55 + 0 + 0=0\),原因如上。
题解:
T1
考虑按时间顺序 dp。将边按开始时间加入,设 \(f_i\) 为经过第 \(i\) 条边的最小花费,转移是一个斜率优化的形式。
T2
尝试转化题中条件,猜出来几个零星的必要条件,但是并没有什么用。那么直接考虑序列的生成过程。
考虑最值分治,最大值钦定为最右端的那个,设 \(f_{l,r,k}\) 表示 \([l,r]\) 最大值为 \(k\) 的方案数,转移 \(f_{l,r,k}=\sum_{p} f(l,p-1,k)\times f(p+1,r,k-1)[\mathrm{区间 [l,p-1],[p+1,r] 均合法}]\)。
注意到 \(p\) 只在区间中点附近有 \(\mathcal O(1)\) 种有效取值,猜想有用的区间并不会太多,打个暴力发现就 \(2500\) 个左右。
然后考虑优化,这样的 dp 贡献形式是经典的,可以使用拉格朗日插值优化。分段 \(\mathcal O(n)\) 插值即可做到 \(\mathcal O(Sn^2)\),但是有点卡不过去。
为啥是 0 分?因为我向右走的条件读错了,写了 7k 代码调不出来,打暴力发现还不对,睡一觉起来发现读错题了,删了几个无用分讨就过了 /qd。
T3
模拟费用流,我觉得我讲不明白,cmd 写的很好。