讨论 / 大牛帮我看看
怡红公子 2012-01-06 04:10:00
点我顶贴 收藏 删除
#include<iostream>

using namespace std;

int a[100001],m,n,mid;

int check(){

int i=1,j=1,l=0;

while(i<=n)

{

l+=a[i];

if(l>mid) {j++;l=a[i];}

i++;

}

if(j<=m) return 1; //差别

else return 0;

}

int main()

{

int i,j,left=0,right=0;

cin>>n>>m;

for(i=1;i<=n;i++)

{

cin>>a[i];

right+=a[i];

if(a[i]>left) left=a[i];

}

while(left<right)

{

mid=(left+right)/2;

if(check())

right=mid;

else left=mid+1;

}

cout<<right;

system("pause");

return 0;

}

#include<iostream>

using namespace std;

int a[100001],m,n,mid;

int check(){

int i=1,j=1,l=0;

while(i<=n)

{

l+=a[i];

if(l>mid) {j++;l=a[i];}

i++;

}

if(j<m) return 1; //差别

else return 0;

}

int main()

{

int i,j,left=0,right=0;

cin>>n>>m;

for(i=1;i<=n;i++)

{

cin>>a[i];

right+=a[i];

if(a[i]>left) left=a[i];

}

while(left<right)

{

mid=(left+right)/2;

if(check())

right=mid-1; //差别

else left=mid;

}

cout<<left;

return 0;

}

两程序应该都可以,为什么下一个就不能呢?

#1 怡红公子@2012-01-06 04:10:00
回复 删除
一直令我很困惑

RT

查看更多回复
提交回复