1 条题解
-
1
简单小二分
#include<bits/stdc++.h> using namespace std; long long n,m,arr[400010]; long long ans=1e18; bool check(int x){ long long stu=0; for (int i = 1; i <= m; i++) { stu=stu+int((ceil(arr[i]*1.0/x))); if(stu>n)return false; } return stu<=n; } void solve(){ long long l=1,r=0;; cin>>n>>m; for(int i=1;i<=m;i++){ cin>>arr[i]; r=max(arr[i],r);} while(l<=r){ int mid=(l+r)/2; if(check(mid)){r=mid-1;ans=mid;} else l=mid+1; } cout<<ans; } int main(){ solve(); }
- 1
信息
- ID
- 140
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 3
- 已通过
- 3
- 上传者