解题思路:emmm就是经典的二分答案,但是我有一个案例没通过,不知道哪里有问题,有找到问题的欢迎评论区留言
注意事项:
参考代码:
#include <bits/stdc++.h> using namespace std; int n,m; vector <int>a; bool g(int x){ int cnt=0; int sum=0; for(int i=0;i<a.size();i++){ if(sum+a[i]>x){ sum=a[i];//分出一组 cnt++; } else { sum+=a[i]; } } cnt++;//剩下和没有超过x,但是要分到一组去,不然会少 return cnt<=m; } int main(){ cin>>n>>m; int sum=0; int k; for(int i=0;i<n;i++){ cin>>k; a.push_back(k); sum+=a[i]; } int l=0,r=sum; while(l<=r){ int mid=(l+r)>>1; if(g(mid)){//mid大了 r=mid-1; } else l=mid+1; } cout<<l; return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:521 |
钟神赛车 (C++代码)浏览:864 |
C语言训练-最大数问题 (C语言代码)浏览:633 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:1514 |
printf基础练习2 (C语言代码)浏览:740 |
用筛法求之N内的素数。 (C语言代码)浏览:646 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:556 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:533 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:632 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1478 |