題意:
給你一組"數",一共n個,每個數有兩個權值,價錢a[i],代價b[i],讓你選擇n - k使得 sigma(a[i]) / sigma(b[i]) * 100 最大;
思路:
毫無疑問這個是01分數規劃的最進本形式,唯一的限制就是取個數,那麼我們直接sort以下,取出來就行了。沒啥解釋的,這個是自己的第乙個01分數規劃,一會要自己總結下01分數規劃的理解了,感覺不是很難,就是證明點東西。
自己總結的01分數規劃:
#include
#include
#define n 1000+10
#define inf 1000000000
#define eps 0.000001
using
namespace std;
bool
camp
(double a ,
double b)
double a[n]
,b[n]
,d[n];
boolok(
double l ,
int n ,
int k)
intmain
() ans *=
100;
printf
("%.0lf\n"
,ans);
}return0;
}
POJ 2976 01分數規劃
剛做完了最優比率生成樹 就瞬間來了感覺了 題目大意就 給定n個二元組 a,b 扔掉k個二元組,使得剩下的a元素之和與b元素之和的比率最大 題目求的是 max a i x i b i x i 其中a,b都是一一對應的。x i 取0,1 並且 x i n k 那麼可以轉化一下。令r a i x i b ...
POJ2976 0 1分數規劃
include include include include using namespace std const int maxn 1000 5 const double eps 1e 7 struct node n maxn bool cmp node u,node v int n,k bool...
poj 2976 基礎01分數規劃
這個題算是01分數規劃的最基本的應用了,01分數規劃是給你n對數 a1,b1 an,bn 然後讓你選擇一些數對,使得sigma ai sigma bi 最大。這裡附上講解乙份,如下 include include include include include using namespace std...