杭电二分法NO1064

xiaoxiao2021-02-28  132

#include<stdio.h> int N,K; int cala(int x); double L[10005]; int main() { double max; int i,l,r,mid,maxl; scanf("%d %d",&N,&K); for(i=0;i<N;i++) scanf("%lf",&L[i]); max=L[0]; for(i=0;i<N;i++) if(L[i]>max) max=L[i]; l=0; r=max; while(l-r>=1e-6) { mid=(int)(l+r)/2; if(mid&&cala(mid)) { maxl=mid; l=mid+1; } else r=mid-1; } printf("%.2f",maxl); return 0; } int cala(int x) { int i,m; for(i=0;i<N;i++) m+=L[i]/x; if(m>=K) return 1; else return 0; }
转载请注明原文地址: https://www.6miu.com/read-28987.html

最新回复(0)