首页 > 代码库 > POJ1064
POJ1064
1 #include <iostream> 2 #include <iomanip> 3 #include <cmath> 4 using namespace std; 5 6 int N; 7 int K; 8 double num[10001]; 9 10 int calc(double len)11 {12 int numK= 0;13 for(int i = 0; i < N; ++i)14 {15 numK += (int)(num[i] / len); 16 }17 return numK;18 }19 20 double solve()21 {22 double low = 0;23 double upper = 100000;24 int count = 0;25 double mid;26 int numK;27 while(count < 100)28 {29 mid = (low + upper) / 2;30 numK = calc(mid);31 if(numK >= K)32 low = mid; 33 else34 upper = mid;35 ++count; 36 }37 return mid;38 }39 40 int main()41 {42 //基于二分法的思想实现 43 cin >> N >> K;44 for(int i = 0; i < N; ++i)45 cin >> num[i];46 //这里floor很重要 47 cout << setiosflags(ios::fixed) << setprecision(2) << floor(solve()*100)/100 << endl;48 return 0;49 }
POJ1064
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。