程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> NYOJ 914 Yougth的最大化

NYOJ 914 Yougth的最大化

編輯:C++入門知識

Yougth的最大化

時間限制:1000 ms | 內存限制:65535 KB 難度:4
描述

Yougth現在有n個物品的重量和價值分別是Wi和Vi,你能幫他從中選出k個物品使得單位重量的價值最大嗎?

輸入
有多組測試數據
每組測試數據第一行有兩個數n和k,接下來一行有n個數Wi和Vi。
(1<=k=n<=10000) (1<=Wi,Vi<=1000000)
輸出
輸出使得單位價值的最大值。(保留兩位小數)
樣例輸入
3 2
2 2
5 3
2 1
樣例輸出
0.75
思路:二分加貪心
#include
#include
#include
using namespace std;
int w[10000],v[10000],n,k;
double y[10000];
bool C(double x)
{
 for(int i=0;i=0;
}
void solve()
{
            double lb =0,ub=10000;
            for(int i=0;i<100;i++)
            {
               double mid =(lb+ub)/2;
               if(C(mid)) lb = mid;
               else ub=mid;
            }
            printf("%.2f\n",ub);
}
int main()
{
   
   while(cin>>n>>k)
    {
   for(int i=0;i>w[i]>>v[i];
   solve();
   //system("pause");
    }
   return 0;
   
}



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved