题目链接
就是二分,第8.0版本的wa代码之后,一通把int换成longlong
好家伙,search函数的参数和返回值忘记换了,爆了int
统统搞成long long
#include#include #include //malloc using namespace std; typedef long long int ll; int n,m; ll a[100005]; ll sum[100005]; bool adequate(ll x){ ll temp=0;//累计一份的花销 ll cnt=1; for(int i=1;i<=n;i++){ if(temp+a[i]<=x){ temp+=a[i]; } else{ cnt++; temp=a[i]; } } if(cnt<=m){ return true; } else return false; } ll search(ll left,ll right){//对满足最大花销的范围找最小值 ll res=0; while(left<=right){ ll mid=left+(right-left)/2; if(adequate(mid)){ res=mid; right=mid-1; } else left=mid+1; } return res; } int main(){//求最大花销,对最大花销可能的范围进行二分,求最小值 cin>>n>>m; ll maxx=-1; for(int i=1;i<=n;i++){ cin>>a[i]; sum[i]=a[i]+sum[i-1]; maxx=max(maxx,a[i]); } cout<



