#P943. 【CTS2025】倾诉
【CTS2025】倾诉
“在我们倾诉的时候,烦恼衰减了。倾诉者的难过一半交给了对方,另一半随着声波还给了世界。烦恼就这样在人群里越传越弱,直到随风而逝。”
小 I 的小圈子里有 $n$ 个人,第 $i (1 \le i \le n)$ 个人初始有正整数 $a_i$ 的烦恼。
为了减轻大家的烦恼,小 I 组织了一次聊天活动,活动中 $n$ 个人按照编号从小到大的顺序从左往右坐成一排。
时间有限,小 I 可以在活动中组织不超过 $k$ 次倾诉。每次倾诉中,某个倾诉者 $p (1 \le p \le n-1)$ 向右手边的人 $p+1$ 倾诉,这首先导致 $a_{p+1} \leftarrow a_{p+1} + \frac{1}{2} a_p$,然后 $a_p \leftarrow 0$,其中 $\leftarrow$ 表示赋值。小 I 可以任意选择每次倾诉的倾诉者。注意编号为 $n$ 的人不会向其他人倾诉。
小 I 希望大家的烦恼尽可能少,于是他想知道:在活动过后,所有人最终烦恼的最大值最小是多少。
你需要输出答案的精确值。具体地,答案总能写成 $\frac{S}{2^n}$ 的形式,其中 $S$ 是一个不超过 $2^n \times (\max_{i=1}^n a_i)$ 的正整数。你需要输出 $S$ 的二进制表示。
输入格式
本题有多组测试数据。输入的第一行一个整数 $T$,表示测试数据组数,接下来依次描述每组测试数据。
每组测试数据的第一行两个整数 $n,k$,分别表示人数和倾诉次数上限;第二行 $n$ 个正整数 $a_1,a_2,\cdots, a_n$ 描述初始每个人的烦恼值。
输出格式
对于每组数据输出一行一个 01
字符串,从高位到低位描述 $S$ 的二进制表示。你的输出不应该有前导零。
样例 #1
样例输入 #1
3 3 1 5 2 1 3 2 5 2 1 3 3 5 2 1
样例输出 #1
100100 10100 10100
【样例 1 解释】
对于第一组测试数据,最优策略为让第一个人倾诉。最终烦恼值为 $(0,4.5,1)$,故输出 $4.5 \times 2^3 = 36$ 的二进制表示 100100
。
对于第二和第三组测试数据,最优策略为先让第二个人倾诉,再让第一个人倾诉。最终烦恼值为 $(0,2.5,2)$,故输出 $2.5 \times 2^3 = 20$ 的二进制表示 10100
。
样例 #2
样例输入 #2
见题目目录下的 2.in 与 2.ans。
样例输出 #2
见题目目录下的 2.in 与 2.ans。
【样例 2 解释】
该组样例七个测试数据的答案分别为 $10, 10, 8, 5, 3.5, 2.75, 2.5$。
数据范围
设 $\sum n$ 表示单个测试点中所有测试数据的 $n$ 的和。对于所有测试数据,保证
- $1 \le T \le 2\times 10^4$,
- $1 \le n, \sum n \le 2\times 10^4$,$1 \le k \le 10^9$,
- $\forall 1 \le i \le n, 1 \le a_i \le 10^6$。
时间限制:4s $\texttt{8s}$
空间限制:$\texttt{512MB}$