不靠谱的题解
2026-05-16 13:31:27
发布于:广东
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("Prince.in","r",stdin);
freopen("Prince.out","w",stdout);//考CSP不会这个废了
int n,k;
cin>>n>>k;
int a[n];
for(int i = 0;i<n;i++)cin>>a[i];
int l=0,r=INT_MAX,mid,ans;//亖个变量
while(l<=r){
int sum=0;
mid=(l+r)/2;//什么意思你懂的
for(int i = 0;i<n;i++)sum+=ceil(a[i]*1.0/mid);//计算
if(sum>=k){
ans=mid;
l=mid+1;
}else r=mid-1;//二分
}cout<<ans;//结果
}//时间复杂度O(nlogn)
基本思路:
用枚举算出结果,再进行二分,可以就找更大,否则找更小。
时间复杂度O(nlogn)(枚举N*二分log₂N)符合要求
注意要用文件判题
全部评论 1
没人发题解,我就发一个











1周前 来自 广东
0







有帮助,赞一个