nyoj-976-Youth的最大化(贪心+二分)
生活随笔
收集整理的這篇文章主要介紹了
nyoj-976-Youth的最大化(贪心+二分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本題為01分數規劃
同類題型poj-2976
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int n,k; double s[10005],w[10005],v[10005]; bool Greedy(double x) {for(int i = 0;i < n;i++)s[i] = v[i] - x * w[i];sort(s,s+n);double sum = 0;for(int i = n-k;i < n;i++)sum += s[i];if(sum >= 0) return true;return false; } void search(double l,double r) {while(r - l > 0.0000001){double mid = (l + r) / 2;if(Greedy(mid)) l = mid;else r = mid;}printf("%.2lf\n",l); } int main() {while(~scanf("%d%d",&n,&k)){double max = 0;for(int i = 0;i < n;i++){scanf("%lf%lf",&w[i],&v[i]);if(max < v[i]/w[i])max = v[i]/w[i];}search(0,max);} }總結
以上是生活随笔為你收集整理的nyoj-976-Youth的最大化(贪心+二分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTO总结的管理30条军规
- 下一篇: vue-ls vue 本地储存示例