【二分答案】工资
发布日期:2021-05-07 22:46:24 浏览次数:38 分类:精选文章

本文共 656 字,大约阅读时间需要 2 分钟。


二分答案。本来还想着DP或者二分答案再优化优化的,一看数据范围能过就不管了。


代码

#include
#define ll long longll n,m,l,r,mid;ll k[1000005];bool pd(ll zz){ ll lj = 0,sl = 0; //累计值,数量 for(int i = 1; i <= n; ++i){ //逐个累加,看看需要分段数量是否大于mid if(lj + k[i] <= zz) lj += k[i]; else{ lj = k[i]; ++sl; } if(lj > zz || sl > m) return 0; } if(sl+1 > m) return 0; return 1; }int main(){ scanf("%lld%lld", &n, &m); for(ll i = 1; i <= n; ++i){ scanf("%lld", &k[i]); r += k[i]; } l = 0; while(l
> 1; if(pd(mid) == 0) l = mid + 1; else r = mid; } printf("%lld",r);}
上一篇:【gcd】【桶】【伪暴力】欠扁的CD
下一篇:【数论】分火腿

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月17日 03时17分19秒