3 条题解
-
1
和morgen学长的差不多,改了一点😄 #include<iostream> using namespace std; int n,m,k; bool cheak(int mid) { //sum是当前选mid长度长凳最大容纳总人数 //最大容纳就是空位最少 //紧邻排列且每个排列空一位最优 //m/(mid+1)为最小空位数 int sum=n*(m-m/(mid+1)); if(sum>=k) return 1; return 0; } int main() { int t; cin>>t; while(t--) { cin>>n>>m>>k; //二分找最优 int l=1,r=m; int ans=0; while(l<=r) { int mid=(l+r)/2; if(cheak(mid)) { ans=mid; r=mid-1; } else { l=mid+1; } } cout<<ans<<endl; } return 0; }``
信息
- ID
- 1162
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 12
- 已通过
- 5
- 上传者