時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:4描述
yougth現在有n個物品的重量和價值分別是wi和vi,你能幫他從中選出k個物品使得單位重量的價值最大嗎?
輸入
有多組測試資料
每組測試資料第一行有兩個數n和k,接下來一行有n個數wi和vi。
(1<=k=n<=10000) (1<=wi,vi<=1000000)
輸出輸出使得單位價值的最大值。(保留兩位小數)
樣例輸入
3 22 25 3
2 1
樣例輸出
0.75
**yougth
上傳者tc_楊闖亮
思路:這道題採用的是二分法+貪心演算法,k個物品的單位重量的價值一定小於這些單品中的最大單位重量的價值,同樣一定大於0;這樣就相當於二分法找中間值,比較,然後再二分。貪心則在求最大,一定先選擇單位重量的價值大的物品。
#include#includeusing namespace std;
int n,k;
struct nodea[10005];
double b[10005];
int cmp(node a,node b)
int judge(double mid)
return sum>=0?1:0;//sum>0,說明單位價值還可以更大,在mid~last區間;
//sum<0,說明單位價值比mid小,在top~mid區間
}int main()
printf("%.2lf\n",l);//注意:在類似瘋牛一題中輸出是l-1
} return 0;
}
南陽理工914Yougth的最大化
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 yougth現在有n個物品的重量和價值分別是wi和vi,你能幫他從中選出k個物品使得單位重量的價值最大嗎?輸入 有多組測試資料 每組測試資料第一行有兩個數n和k,接下來一行有n個數wi和vi。1 k n 10000 1 wi,v...
NYOJ 914 Yougth的最大化
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 yougth現在有n個物品的重量和價值分別是wi和vi,你能幫他從中選出k個物品使得單位重量的價值最大嗎?輸入 有多組測試資料 每組測試資料第一行有兩個數n和k,接下來一行有n個數wi和vi。1 k n 10000 1 wi,v...
NYOJ 914 Yougth的最大化
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 yougth現在有n個物品的重量和價值分別是wi和vi,你能幫他從中選出k個物品使得單位重量的價值最大嗎?輸入 有多組測試資料 每組測試資料第一行有兩個數n和k,接下來一行有n個數wi和vi。1 k n 10000 1 wi,v...