poj 3273
参数搜索。
代码:
#include<iostream>
#include<fstream>
using namespace std;
long long n,m,mid;
long long a[100001];
long long solve(){
long long i,j=1,k=0;
for(i=1;i<=n;i++)
{
if(a[i]-a[k]>mid)
{
j++;
k=i-1;
}
}
return j;
}
void read(){
// ifstream cin("in.txt");
long long i,j,k=0,s;
while(cin>>n>>m){
k++;s=0;
for(i=1;i<=n;i++)
{
cin>>j;
s=max(s,j);
a[i]=a[i-1]+j;
}
i=s;j=a[n];
while(i<=j)
{
mid=(i+j)>>1;
if(solve()<=m) j=mid-1;
else i=mid+1;
}
cout<<i<<endl;
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号