0
已解决
陆麟瑞
资深天翼
资深天翼
我这道题在其他oj上AC了,在酷町堂就只得了50分,各位管理员能不能修改一下。
@管理员@酷町喵~o( =∩ω∩= )o~@葛新
这是我的50分代码:
#include <iostream>
using namespace std;
int n,m,a[100000];
bool pd(int x)
{
int t=0,sum=0;
for(int i=1; i<=n; i++)
{
if(a[i]>x) return false;
sum+=a[i];
if(sum>x)
{
sum=a[i];
t++;
}
}
t++;
if(t<=m) return true;
return false;
}
int main()
{
int sum=0;
cin>>n>>m;
for(int i=1; i<=n; i++)
{
cin>>a[i];
sum+=a[i];
}
int i=0,j=sum;
while(i<j)
{
int mid=(i+j)/2;
if(pd(mid)) j=mid;
else i=mid+1;
}
cout<<j<<endl;
return 0;
}
0
2
0
梁锦程
高级光能
高级光能
int check(int x) {// 比m多 return 1
int k=0;
int p=0;
for (int i=1;i<=n;i++) {
k+=a[i];
if (k>=x) {
p++;
if (a[i]<x)
k=a[i];
else return 1;//fix不允许有分组大于mid的
}
}
return p>=m;
}
void go() {
while (l+1<r) {
mid = (l+r)/2;
if (check(mid)) l=mid; else r=mid;
}
printf("%d", l);
}