[7.18NOIP模拟测试4]砍树 题解(数论分块)

又考没学的姿势……不带这么玩的……

考场上打了个模拟 骗到30分滚粗了

稍加思考(滑稽)可将题面转化为:

求一个最大的$d$,使得

  $\sum \limits _{i=1}^n {(\left \lceil \frac{a_i}{d} \right \rceil *d-a_i)} \leq k$

移项可得

  $\sum \limits _{i=1}^n {\left \lceil \frac{a_i}{d} \right \rceil *d} \leq k+\sum \limits _{i=1}^{n}{a_i}$

那么$\leq$ 右侧就变成了一个常量,我们将其设为$C$。

然后让左侧只留下$d$以求出其最大值,把带$\sum$那一坨除过去

不难发现,$\sum \limits _{i=1}^{n}{\left \lceil \frac {a_i}{d}\right \rceil }$是以个递减的分段函数,且每段的值唯一

猜你喜欢

转载自www.cnblogs.com/Rorschach-XR/p/11208099.html
今日推荐