bzoj
jsoi資訊學代表隊一共有n名候選人,這些候選人從1到n編號。方便起見,jyy的編號是0號。每個候選人都由一位
編號比他小的候選人ri推薦。如果ri=0則說明這個候選人是jyy自己看上的。為了保證團隊的和諧,jyy需要保證,
如果招募了候選人i,那麼候選人ri"也一定需要在團隊中。當然了,jyy自己總是在團隊裡的。每乙個候選人都有
乙個戰鬥值pi",也有乙個招募費用si"。jyy希望招募k個候選人(jyy自己不算),組成乙個價效比最高的團隊。
也就是,這k個被jyy選擇的候選人的總戰鬥值與總招募總費用的比值最大。
輸入一行包含兩個正整數k和n。
接下來n行,其中第i行包含3個整數si,pi,ri表示候選人i的招募費用,戰鬥值和推薦人編號。
對於100%的資料滿足1≤k≤n≤2500,0<"si,pi"≤10^4,0≤ri輸出一行乙個實數,表示最佳比值。答案保留三位小數。
1 21000 1 0
1 1000 1
0.001
典型的分數規劃
二分答案後將點權轉換為\(p-mid·s\)
然後做乙個樹上揹包就行了
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
#define rg register
#define max 3000
inline int read()
int n,k,p[max],s[max],fa[max];
struct linee[max];
int h[max],cnt=1,size[max];
inline void add(int u,int v);h[u]=cnt++;}
double v[max],f[max][max],tmp[max];
void merge(int x,int y)
void dfs(int u)
bool check(double mid)
int main()
double l=0,r=1e6;
while(r-l>1e-4)
printf("%.3lf\n",l);
return 0;
}
bzoj4753 最佳團體
jsoi 資訊學代表隊一共有 nn 名候選人,這些候選人從 11 到 nn 編號。方便起見,jyy 的編號是 00 號。每個候選人都由一位編號比他小的候選人r iri 推薦。如果 r i 0ri 0 則說明這個候選人是 jyy 自己看上的。為了保證團隊的和諧,jyy 需要保證,如果招募了候選人 ii...
bzoj 4753 最佳團體
written with stackedit.jsoi 資訊學代表隊一共有n名候選人,這些候選人從 1 到 n 編號。方便起見,jyy 的編號是 0 號。每個候選人都由一位編號比他小的候選人 r i 推薦。如果 r i 0 則說明這個候選人是 jyy 自己看上的。為了保證團隊的和諧,jyy 需要保證...
bzoj4753 最佳團體
jsoi 資訊學代表隊一共有 nn 名候選人,這些候選人從 11 到 nn 編號。方便起見,jyy 的編號是 00 號。每個候選人都由一位編號比他小的候選人r iri 推薦。如果 r i 0ri 0 則說明這個候選人是 jyy 自己看上的。為了保證團隊的和諧,jyy 需要保證,如果招募了候選人 ii...