moiezen】的更多相关文章

题意:有n件行李,编号为1~n.行李的质量是模 P 意义下的(P不一定是质数).有 k 个背包,要装下这些行李,为了方便在背包中找行李,每个背包中的行李编号是连续的,允许有背包为空.我们想让最重的背包尽量轻.你可以选择一个x(0<=x<P),给所有行李的质量+x 并%P,然后才装到背包里去. 你要先选择一个 x,再选择一种行李分配方案,使得最重的背包尽量轻.(n<=10000,P<=10000) 题解:暴力做法直接枚举x,二分答案即可,时间复杂度\(O(nPlogn)\) 满分做法…
这题是个随机化+二分裸题--------考场上居然没有想出来--想的出来就怪了吧 我们随机一下增加x的顺序,然后进行二分之前,看看这个x加完之后能不能更新答案,不能就不二分了.具题解所说,这个复杂度是\(logp\)的. 第一次见这种东西,比较蛇皮. 代码如下: #include <ctime> #include <cstdio> #include <algorithm> using namespace std; const int maxn=10005,inf=2e9…