社区讨论
求大佬解决一下我的小疑问,感谢!!
P2440木材加工参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lod7xo5n
- 此快照首次捕获于
- 2023/10/31 02:13 2 年前
- 此快照最后确认于
- 2023/11/05 12:39 2 年前
为什么在第34行那里我把l=mid-1改成l=mid就通过全部测试了呢(没改之前第六第七个测试点超时)
CPP#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
using namespace std;
long long n,k,a[100005],r,l,mid,sum,mark=0;
bool cmp(int a,int b){
return a>b;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1,cmp);
r=0;
l=a[1];
while(r!=l-1){
sum=0;
mid=(r+l)/2;
if(mid==0) break;
for(int i=1;i<=n;i++){
if(a[i]/mid!=0){
sum+=a[i]/mid;
}
else{
break;
}
}
if(sum>=k){
r=mid;
}
else{
l=mid;//l=mid-1;
}
}
for(int i=1;i<=n;i++){
if(l==0) break;
if(a[i]/l!=0){
mark+=a[i]/l;
}
else{
break;
}
}
if(mark>=k){
cout<<l;
}
else{
cout<<r;
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...