2020-2021:teams:farmer_john:jjleo:codeforces_round_639_unrated
A
B
C
D
题解:对于某一个$i$,当$b_i$为$x$时,如果令其加$1$,对答案的贡献为$\Delta_i (x):=\left[x(a_i-x^2)\right]-\left[(x-1)(a_i-(x-1)^2)\right]=a_i-3x^2+3x-1,$,可以看到这个二次函数是开口向下而且顶点横坐标在$\frac{1}{2}$,因此在本题定义域中是严格单调递减的。我们可以让所有$b_i$为$0$,然后贪心地看给哪个$b_i$增加$1$的贡献最大就增加哪个。由于$k$太大,因此我们二分每次增加$1$所产生贡献的最小值,对于要验证的值,再套一个二分(或者解方程)算每个$bi$可以加几次,保证总和大于等于$k$,最后如果总和超出$k$,一定可以将多余的增加值等于二分出来的值的$b_i$减少$1$,否则二分的值可以更小。
2020-2021/teams/farmer_john/jjleo/codeforces_round_639_unrated.txt · 最后更改: 2020/05/10 22:07 由 jjleo