最强的网站建设电话,做数码后期上数码网站,国际知名设计公司有哪些,平面设计公司调研报告抄书
题目大意#xff1a;
有n本书#xff0c;分给m个人抄#xff0c;每个人只能拿到连续的书#xff08;不能把一本书分开#xff09;#xff0c;问抄书最多的人要抄多少页
样例输入
9 3
100 200 300 400 500 600 700 800 900
样例输出
1700
数据范围限制
对于…抄书
题目大意
有n本书分给m个人抄每个人只能拿到连续的书不能把一本书分开问抄书最多的人要抄多少页
样例输入
9 3
100 200 300 400 500 600 700 800 900
样例输出
1700
数据范围限制
对于10%的数据,有N10
对于50%的数据,有N500;
对于100%的数据,有N3000;
解题思路
这道题很可能想到DP但会炸我们要用二分枚举答案然后用一冲循环来把书分配给每个人
#includecstdio
#includeiostream
#includecstring
using namespace std;
int n,m,num,maxn,l,r,mid,p,w,b[3005],a[3004];
int main()
{scanf(%d %d,n,m);for (int i1;in;i){scanf(%d,a[i]);maxna[i];//求总值nummax(num,a[i]);//求最大的}lnum;//最小的rmaxn;//最大的while(lr){mid(lr)/2;//二分p1;memset(b,0,sizeof(b));//清零w1;for (int i1;in;i)if (b[w]a[i]mid) b[w]a[i];//没有大于当前枚举的结果else {if (wm)//若没人了就是没有解{p0;break;}b[w]a[i];//有人就换一个人}if (p) rmid-1;//二分else lmid1;//二分}printf(%d,l);return 0;
}