大胃王比赛WA50pts求助

题目:


或直接使用
https://www.xinyoudui.com/problem/20730

来直接进入。

#include <bits/stdc++.h>
using namespace std;
int a[100005];
int n,c,t;
bool check(int x){
  int cs=0,cnt=1;
  for(int i=1;i<=n;i++){
    if(cs+a[i]<=t*x){
      cs+=a[i];
    }else{
      cnt++;
      cs=a[i];
      if(cnt>c){
        return false;
      }
    }
  }
  return true;
}
int main(){
  int maxn=-1,sum=0;
  cin>>n>>c>>t;
  for(int i=1;i<=n;i++){
    cin>>a[i];
    maxn=max(maxn,a[i]);
    sum+=a[i];
  }
  int mint=maxn/t;
  int maxt=sum/t;
  int l=mint,r=maxt,mid;
  while(l<r){
    mid=(l+r)/2;
    if(check(mid)==true){
      r=mid;
    }else{
      l=mid+1;
    }
  }
  cout<<l;
}

求助

1 个赞

没人吗,我@点人

@王钰宸涵 @charlieqi @吴梓峤 @彭英哲

1 个赞

让我看看

maxt不对
应该是要每包/t向上取整,一般不影响复杂度可以直接改成 maxt=sum。
应该能过。
@2345安全卫士

过了别忘了给解决方案

刚看到,我看一下

1 个赞

你们的活跃时间好奇葩…

1 个赞

我刚放学

1 个赞

原来如此,南北差异的问题

1 个赞

那你住哪?

看好了吗

东北啊

1 个赞

那你们什么时候放暑假。
不对你们有暑假吗?

肯定有啊,我们也不是全年零下啊…

1 个赞

所以你现在很闲是吗

确实没啥事,除了中考

不看不知道,看了管理人员操作才知道,什么时候出的新徽章
image

嘿嘿,有勋章我就会拿,嘿嘿

加上所有能拿的徽章。
我徽章就和你一样多了

然后,你再给我这个帖子点赞,徽章就比你多了