题解:CF1603E A Perfect Problem
posted on 2025-05-04 08:33:01 | under | source
题意:求有多少个值域在 \([1,n+1]\) 长度为 \(n\) 的序列 \(a\),满足 \(a\) 的任意子序列 \(b\) 都有 \(\max b\times \min b\ge \sum b\)。\(n\le 200\)。
考虑判定。先排序,然后发现子序列填充为区间总和变大,限制更严;填充为前缀总和变大、最小值变小,限制更严。
\([1,n+1]\) 的限制怪怪的,从值域下手,分讨 \(a_x\) 与 \(x\) 的关系:
- \(a_x<x\):\(a_1a_x<xa_1\le \sum\limits_{j\in[1,x]} a_j\),非法。
- \(a_x=x\):\(a_1a_x=xa_1\le \sum\limits_{j\in[1,x]}a_j\),合法当且仅当 \(x\) 前缀全是 \(x\)。
- \(a_x>x\):不妨从 \(a_n=n+1\) 开始,限制为 \(a_1\ge \sum (a_i-a_1)\)。对于其它的 \(x<n\),当 \(a_x=x+1\) 时限制最严,但是还是没有刚才 \(a_n\) 的限制严,所以不用管。
那么枚举一个 \(a_x=x\) 且 \(\forall y>x,a_y>y\),然后就能直接背包了。总复杂度由于调和级数是 \(O(n^4\log n)\)。
然后考虑已知 \(a_1\) 最小化 \(\sum a\),必然是 \(a_1\) 个 \(a_1\) 然后接着 \(a_1+1,a_1+2\dots\)。解个不等式发现 \(a_1<n-2\sqrt n\) 非法。
所以复杂度 \(O(n^{3.5}\log n)\)。

浙公网安备 33010602011771号