社区讨论

说一下这个题的卡时做法

P7962[NOIP2021] 方差参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@loba77eh
此快照首次捕获于
2023/10/29 17:41
2 年前
此快照最后确认于
2023/11/03 23:38
2 年前
查看原帖
在你得出差分序列单谷的性质之后,有这样一个dp:
强行钦定差分序列最小值处的 a=0a=0 ,然后变成从小到大枚举差分值,往左或往右放的问题。
f[l][r][s]f[l][r][s] 表示往左放的差分值和是 ll ,往右放的差分值和是 rr ,目前已有的 aia_i 和为 ss 的情况下,ai2\sum a_i^2 最小是多少。
理论上这个 ss 最大可能到 O(nm)O(nm) ( mmaia_i 的最大值),但这题的评论区里已经有人说了这一维不太可能跑满,所以你大概卡一个上界(比如常数倍的 mm )就行了。
但如果你不知道这个上界到底开多少才稳妥,还有这么一个卡时做法:
枚举最终所有数的和 ss ,然后在dp时直接省略 ss 这一维, dp[l][r]dp[l][r] 表示左边差分值的和 ll 右边差分值的和 rr 的情况下, (nais)2\sum (na_i - s)^2 最小是多少。
注意看上去这个式子因为没有在dp里控制真正的 ai\sum a_i 是多少,但是结果却是对的,因为如果你把方差的计算公式 (aia)2/n\sum(a_i-\overline{a})^2/n 中的 a\overline{a} 换成别的值的话只会让算出来的方差偏大,所有的东西求个最小值之后就只剩下最优解里正确的 ss 算出来的方差了。
这样一来你就可以枚举 ss 然后卡时,单次dp是 O(m2)O(m^2) 的。
目前我们没有任何人能卡掉这个做法(盲猜CCF也卡不掉),所以我们猜最终答案中这个 ss 可能就是最多 O(m)O(m) 级别的,但我们也不会证明。
所以有谁能证明这个结论或构造能卡掉这个卡时做法的数据吗qwq

回复

1 条回复,欢迎继续交流。

正在加载回复...