| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求助~~~~感激不尽~~~#include<iostream>
#include<string.h>
using namespace std;
bool canDiv(int p[],long long mid,int m,int k,bool e[])
{
int i=m-1,d=0;
long long s=0;
memset(e,false,sizeof(e));
while(i>=0)
{
d++;
if(d>k)
return false;
s=0;
e[i]=true;
while(i>=0)
{
if(s+p[i]>mid)
break;
s+=p[i];
i--;
if(k-d==i+1)
{
while(i>=0)
{
e[i]=true;
i--;
}
return true;
}
}
}
return true;
}
int main()
{
int Test=0,m=0,k=0;
scanf("%d",&Test);
while(Test--)
{
scanf("%d%d",&m,&k);
long long max=0,min=0,mid=0;
int p[501];
bool e[501];
for(int i=0;i<m;i++)
{
scanf("%d",&p[i]);
max+=p[i];
if(p[i]>min)
min=p[i];
}
while(min<max)
{
mid=(min+max)/2;
if(canDiv(p,mid,m,k,e))
max=mid;
else
min=mid+1;
}
for(int i=0;i<m-1;i++)
{
printf("%d ",p[i]);
if(e[i])
printf("/ ");
}
printf("%d\n",p[m-1]);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator