10.6 模拟赛(NOIP 模拟赛 #9)

2025--炼石计划-- 10 月 05 日 --NOIP 模拟赛 #9【订正】 - 比赛 - 梦熊联盟 (mna.wang)

复盘

T1 一眼不会。直接二分肯定没有单调性。先打了 \(64\) 分暴力。

T2 刚开始没看懂题。看懂后发现只因数只有 \(4 \times 10^5\) 个,直接 DP 就行。

但是 DP 复杂度炸了。先放弃。但是一眼秒了 \(n \le 9\)

T3 不是之前没补的模拟赛 T4?好像不是。

T4 一点看不懂。

做 T1。感觉二分好像是有单调性的。快速写了份代码过了大样例。

思考后发现一定是有单调性的。

测了组极限数据用了 \(8\) 秒。原因是内层有个 sort\(\log\) 很慢。但是好像优化不掉。

一通神奇卡常后卡到了 \(1.2\) 秒。仍然过不了,但已经是极限了。放弃。这样应该有 \(90\)

猜测 T2 直接贪心从大到小取一定能取完且合法。事实确实是这样的,虽然不是 sol 的做法。过了样例。应该不会错。

最后拼手速打了 T3,T4 的特殊性质。没全拿到,但是也不少。

\(30+60+10+36=136\),炸了。T1 挂在了 __int128,T2 T 了因为枚举的方式不对。

补了 T1, T2。

总结

好的:

  • 卡常能力很强。

不足:

  • 没有算好数据范围。
  • 特殊性质没打完。以后应该将特殊性质的时间放在比赛前半段。

知识点

  • T1:数学,二分,STL 的 nth_element。
  • T2:搜索。

题解

A. 最棒的玩具销售员

\(k_i \le 0\) 时,方程的最大值会在 \(x = 0\) 时取到。

\(k_i \ge 0\) 时,显然可以二分。

如果既有 \(k_i \le 0\) 又有 \(k_j \ge 0\)。注意到答案有单调性(证明?),因此二分答案 \(x\)。求出 \(y_i = k_ix + b_i\) 后,问题变成了要在 \(y\) 中选择 \(m\) 个数且和最大。

直接 sort 会 T。可以使用线性的 nth_element。总时间复杂度 \(\mathcal O(n \log n)\)

B. 只因数分解

一个只因数一定是 \(n!\) 的约数。虽然不知道这一点也能做。

注意到只因数最多有 \(4\times 10^4\) 个(\(20!\) 有这么多个约数)。我们将这四万个数预处理。

考虑计算答案。可以证明从最大的只因数开始贪心凑 \(n\) 一定合法且数量 \(\le n\)

注意凑 \(n\) 的时候用二分优化。复杂度 \(\mathcal O(Tn\log d(n!))\),其中 \(d(i)\) 表示 \(i\) 的约数。

posted @ 2024-10-06 17:34  2huk  阅读(44)  评论(0编辑  收藏  举报