[DMY]2024 NOIP 模拟赛 Day 11
挂分了。
赛时
T1 看了一眼发现答案有单调性,以为是二分。
想了一会发现写不成,于是去看看特殊性质,发现度数为二的性质只需要对图分一下层,记个到达的深度就行了。
写完以后意识到正解和这个其实是一样的,只需要记录第一次到达的状态,对层数取 \(\min\) 再去做即可。
交上去发现挂了,我的输出里出现了 \(\gt k\) 的数字,然后我直接把答案和 \(k\) 取 \(\min\) ,然后就过样例了。
去看 T2,先把 \(\mathcal{O}(nq)\) 的部分写了,然后去看两个性质,但是没什么思路。
先去看了 T3,直接写了个组合数枚举,然后稍微一想发现是错的,想要保证正确性的话复杂度可以达到 \(\mathcal{O}(C_n^k2^kn)\)。
上个厕所回来意识到 T2 的性质一的特点是区间种类数很小,所以可以 \(\mathcal{O}(nk)\) 地预处理每个区间的答案,记录每个区间在每个端点时的答案和总答案,然后每次修改影响的区间是 \(k^2\) 级的,可以分别考虑每个区间,更新其影响段的答案和对总答案造成的新贡献。想了想细节就开始写了。
调了大概 40min,造了一堆 hack 数据,然后发现我数组用混了。
改完以后就过了。
时间不多了,先去看了眼 T4,迅速写完暴力分,然后回来看 T3。
胡了个三维状态的 DP,用 \(dp_{i,j,k}\) 分别表示加油次数,当前油量,当前所在点,然后开始写转移,枚举上一次从哪里转移过来。但是还没写完比赛就结束了。
赛后
lihe_qwq 说 T3 在一个点只会出现正好加够和加满两种情况,所以状态可以少一维,感觉很对。
回来发现 T1 挂成了 30pts,然后意识到我对 \(k\) 取 \(\min\) 的时候忘记同时操作暴力的分段了(怎么每次都是暴力的锅
对于 T2 的话每个元素能够产生的贡献其实只和离它最近的同色元素有关,初始的时候可以分别考虑每种颜色对区间产生的贡献,修改的时候相当于区间加上等差数列,可以用树状数组+差分实现。
今天这场感觉打的有些紧张,要是时间再多一点感觉能写出来 T3 的部分分。
T3 正解的 DP 需要考虑的细节很多,但是写出来 30pts 的 DP 是不难的。
主要原因还是前面的时间打的太松弛了,以至于后面没有足够的时间来实现思路,以后要注意合理利用时间。