P10311-「Cfz-Round-2」Weighted-Mean
题意
给出 \(a_{1, \ldots ,n},m\) 满足 \(a_i\) 互不相同且 \(a_i\le m\),构造一个 \(b_{1, \ldots ,n}\) 或报告无解,满足:
- \(b_i\le m\)
- \(\frac{\sum a_ib_i}{\sum b_i}\) 为整数。
- \(b\) 里不存在 \(3\) 个相同的元素。
思路
按 \(a\) 排个序,首先条件二推出找到一个整数 \(k\) 使得
即可。我们考虑 \(k\) 如果是中位数是否会好办一些,因为它们是对称的。
于是,考虑中位数为 \(k\),那么先考虑 \(n\) 是奇数的情况,记 \(c_i=a_i-k\),则此时 \(c\) 是对称的,左边是负数右边是正数中间为 \(0\)。那么,很容易想到从外向内匹配,将 \(c\) 倒过来取绝对值即可。先不考虑中间为 \(0\),此时我们发现 \(c\) 的范围是 \([0,m)\) 的,于是我们可以把中间放成 \(m\),又因为 \(a\) 互不相同于是 \(c\) 在不去绝对值也一定互不相同,如果取了的话也是最多一对相同,于是不存在问题。
考虑偶数的情况,发现对于中间两个数,如果它们不连续,那么我们依旧可以取它们值域中间的任意一个数作为答案转成上述情况,还不需要考虑和为 \(0\) 的情况。但是问题是我们发现如果中间的两个数连续,则我们选择中间两个数之一会出现无法一一对应的情况。
那么如果此时 \(n=2\) 就肯定无解了。那么考虑选择左边的中位数,此时存在 \(c_{\frac{n}{2}}=0,c_{\frac{n}{2}+1}=1\)。那么因为 后者只有 \(1\),我们考虑2把它和 \(a_{n}\) 放到一起,令 \(c_n\to c_n+1\)。即选择一个 \([1,\frac{n}{2})\) 里面的 \(i\),然后将 \(b_{\frac{n}{2}+1}=b_n=|c_i|,b_n=c_n\),但是这要求 \(|c_i|\) 不能出现在 \(c_{(\frac{n}{2}+1,n]}\) 中,否则就出现了 \(3\) 次相同的值违背了答案。那么我们考虑如果换成 \(a_{\frac{n}{2}+1}\) 然后类似的与 \(a_1\) 合并是不是也会无解呢?考虑 \(c\) 在两次的取值:
| \(k\) | \(1\) | \(\cdots\) | \(\frac{n}{2}\) | \(\frac{n}{2+1}\) | \(\cdots\) | \(n\) |
|---|---|---|---|---|---|---|
| \(a_{\frac{n}{2}}\) | \(x_1\) | \(\cdots\) | \(0\) | \(1\) | \(\cdots\) | \(x_n\) |
| \(a_{\frac{n}{2}+1}\) | \(x_1-1\) | \(\cdots\) | -1 | \(0\) | \(\cdots\) | \(x_n-1\) |
我们考虑如果取前者不合法,说明 \(x_1+x_n+1=0\),那么后者不合法又说明 \(x_1+x_n-1-1-1=0\),显然无解,即两者至少有一个合法。

浙公网安备 33010602011771号