#include<bits/stdc++.h>
#define eps 0.001
using namespace std;
int n,k;
double l,r;
double sumt,ans,rans;
double a[10010];
bool check(double x){
int sum;
for(int i=1;i<=n;i++){
sum+=(int)(a[i]/x);
}
if(sum>=k)return 1;
return 0;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
sumt+=a[i];
}
l=0;
r=sumt;
while(r-l>=eps){
double mid=(l+r)/2;
printf("%.2lf ",mid);
if(check(mid)){
ans=mid;
l=mid+eps;
}else{
r=mid-eps;
}
}
printf("%.2lf",ans);
return 0;
}
这样测试是正确
#include<bits/stdc++.h>
#define eps 0.001
using namespace std;
int n,k;
double l,r;
double sumt,ans,rans;
double a[10010];
bool check(double x){
int sum;
for(int i=1;i<=n;i++){
sum+=(int)(a[i]/x);
}
if(sum>=k)return 1;
return 0;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
sumt+=a[i];
}
l=0;
r=sumt;
while(r-l>=eps){
double mid=(l+r)/2;
// printf("%.2lf ",mid);
if(check(mid)){
ans=mid;
l=mid+eps;
}else{
r=mid-eps;
}
}
printf("%.2lf",ans);
return 0;
}
注释掉就不对
找个大犇求解