杭电 1551 Cable master 解题报告
题目偶不说了,贴代码:
#include<iostream> using namespace std; int main() { double temp,eps=1e-7; int i,sum,max,low,high,mid,ans,n,k,s[10001]; while(cin>>n>>k && (n||k)) { sum=max=0; for(i=0;i<n;i++) { cin>>temp; s[i]=(int)((temp+eps)*100); if(max<s[i]) max=s[i]; } ans=0; low=1; high=max; while(high>=low) { sum=0; mid=(low+high)/2; for(i=0;i<n;i++) sum+=s[i]/mid; if(sum>=k) { low=mid+1; if(ans<mid) ans=mid; } else high=mid-1; } printf("%.2lf\n",ans*0.01); } }
实话说,之前Wrong了很多次,而且我不知道为什么。懒得研究~