问题标题: 酷町堂:1756公司开销测试点错了。

0
1
已解决
陆麟瑞
陆麟瑞
资深天翼
资深天翼

我这道题在其他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);  
}  

 

我要回答