杂题
作者:互联网
题意
给你一堆石子,\(n\)个。给定\(m\),每次操作如下:
若当前有\(k\)堆石子,每堆\(a_i\)个,给每堆指定\(b_i\),\(.s.t\sum b_i\le m\),然后把每堆分为两堆\(b_i,a_i-b_i\)
求最少操作次数使得最后\(n\)堆石子,每堆一个
\(T\le 1000,m\le n\le 10^9\)
做法
二分操作次数
现在就相当于一个\(n\times mid\)的方格,初始全\(0\),每列填不超过\(m\)个\(1\),使得任意行最后的状态不一样
填\(1\)等价于分配到\(b_i\)中
现在考虑每次给一些行填\(1\),枚举\(i=1,...,mid\),给一些行填\(i\)个,\(i\)产生的不同行个数就是\({mid\choose i}\)
但同时还需要保证\(\sum b_i\le m\),我们发现这样填完后每列被填的个数均为\({mid-1\choose i}\)
标签:le,每堆,sum,石子,mid,行填,杂题 来源: https://www.cnblogs.com/Grice/p/12885183.html