题目内容 有这样一个二分: void calc(int s) { double l = a, r = b; int cnt = 0; while(cnt != s) { double mid = (l + r) / 2; if(check(mid)) l = mid; else r = mid; c…
题目大意 有 $ n $ 个箱子和 $ m $ 个小球,初始时第 $ i $ 个箱子有 $ a_i $ 个小球。每次操作可以将一个小球移到相邻的箱子里。求要使得最终数组 $ a_i \ge a_{i+1} $的最小操作次数。 解题思路 设$ dp_{i,j,k} $ 为前 $ i $ 个箱子里…
题目大意 有 $ n $ 个箱子和 $ m $ 个小球,初始时第 $ i $ 个箱子有 $ a_i $ 个小球。每次操作可以将一个小球移到相邻的箱子里。求要使得最终数组 $ a_i \ge a_{i+1} $ 的最小操作次数 $ a_i $ 大于 $ 0 $ 。 解题思路 看完题解后发现是 dp 。…