问题标题: 酷町堂:4055 WA30分

0
0
已解决
包涵宇
包涵宇
中级天翼
中级天翼

看一看好不好?

看完!

大佬一定能AC!

4055

代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,len[100005];
bool check(int l){
	for(int i=n;i>=1;i--)if(len[i]>l)return 0;
    int j=1,cnt=0,t=0;
    for(int i=n;i>=j;i--){
    	if(t+len[i]>l)
    		t=0,cnt++;
    	t+=len[i];
    	if(t+len[j]>l)
    		t=0,cnt++;
    	t+=len[j],j++;
	}
	if(cnt<=m)return 1;
	return 0;
} 
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)cin>>len[i];
    sort(len+1,len+1+n);
    int l=1,r=1000000000;
    while(l<r){
        int mid=(l+r)/2;
        if(check(mid))r=mid;
        else l=mid+1;
    }
    cout<<l;
    return 0; 
} 

只要改check函数!!!快!!!

介绍:l:卡车车厢最长长度最多为l

len:木材长度

包涵宇在2020-09-23 18:10:37追加了内容

快!


0
已采纳
袁刘新楷
袁刘新楷
新手守护
新手守护

你已经会做了,采纳博吧

0
0
0
0
0
我要回答