NOIP2023 T4 题解
\(1\)~\(2\) 写你喜欢的暴力,实现得好的话复杂度\(O(2^n(n+m))\),期望得分\(8pts\)。
\(17\)~\(18\) 对于每一段,判断\(r_i-l_i+1\le k \space and \space d(r_i-l_i+1) < v_i\),如果成立,加上\(v_i-d(r_i-l_i+1)\)即可。期望得分\(16pts\)。
\(3\)~\(4\) 设\(f_i\)表示以\(i\)为结尾的方案数。枚举\(0\le j \le i-2\),\(max(j+2,i-K+1)\le k\le i\)。\(f_i=max(f_j+w(k,i))\)。\(w(i,j)\)代表\((i,j)\)全勤时,能获得的收益,可预处理得到。复杂度\(O(t(n^3+n^2m))\),期望得分\(24pts\)。
\(5\)~\(7\) 考虑转变一下思路。设\(f_j\)表示当前时刻为\(i\),从\(j\)开始一直打卡到\(i\),强制\(j-1\)不许打卡,连带着\(j-1\)之前的最大收益,也就是说\(f_j\)是动态维护的(有点怀念\(CSP-S2024\space T3\))。原来那个\(f\)改名叫\(dp\)。每枚举到一个\(i\),先把\(f_i\)设为\(max(dp_{i-2})\),再看挑战\((x,i)\),那么就要把\(1\le j\le x\)的\(f_j\)加上\(v\)。同时将所有\(f_i\)减去\(d\)。\(dp_i=max_{i-K+1 \le j \le i}f_i\)。最后的答案为\(max_{i=1}^n(dp_i)\)。复杂度\(O(t(nm+n^2))\),期望得分\(36pts\)。
\(8\)~\(9\) 加\(v\)那一步用差分进行即可,复杂度\(O(tn^2)\),期望得分\(44pts\)。
\(12\)~\(14\) 显然,上面的\(dp\)是可以用可爱的线段树优化的。复杂度\(O(t(n+m)logn)\),期望得分\(56pts\)。
后面的分要看出一个性质:打卡开始和结束的点一定是某个\(l_i\)或\(r_i\),因为多出一部分显然没道理。所以只考虑所有的\(l_i\)和\(r_i\)(注意好细节):
\(10\)~\(11\) 进行\(5\) ~ \(7\)的\(dp\)即可,复杂度\(O(tm^2)\),期望得分\(64pts\)。
\(15\)~\(16\) 只维护\(i-K+1\) ~ \(i\)的\(f\)即可,当然正解不用这么干,复杂度\(O(tmK)\),期望得分\(72pts\)。
\(19\)~\(25\) 进行\(12\) ~ \(14\)的\(dp\)即可,复杂度\(O(tmlogm)\),期望得分\(100pts\)。
可恶的是,如果不写快读快写,会丢\(8pts\),获得\(92pts\)的好成绩。
最后来一句,相信\(NOIP\),能力到了,就一定能考出来!
浙公网安备 33010602011771号