JSOI2016 最佳團體

2022-05-26 07:00:10 字數 1077 閱讀 8141

jsoi資訊學代表隊一共有n名候選人,這些候選人從1到n編號

方便起見,jyy的編號是0號。每個候選人都由一位編號比他小的候選人ri推薦

如果ri= 0 ,則說明這個候選人是jyy自己看上的

為了保證團隊的和諧, jyy 需要保證,如果招募了候選人i,那麼候選人r;也一定需要在團隊中。

當然了,jyy自己總是在團隊裡的。每乙個候選人都有乙個戰鬥值pi ,也有乙個招募費用si

jyy 希望招募k個候選人(jyy自己不算),組成乙個價效比最高的團隊

也就是這k個被jyy選擇的候選人的總戰鬥值與總招募費用的比值最大

一看到比值最大,馬上搞分數規劃

\[\dfrac\leq x

\]推出

\[\sum w_i \leq \sum x * c_i

\]所以

\[\sum w_i-x*c_i \leq 0

\]所以二分答案,在樹上跑依賴揹包即可

**:

#include#define eps 1e-5

#define n 2505

using namespace std;

int k,n;

double dp[n][n],d[n];

struct people

a[n];

struct edge

edge[n<<1];

int cnt=0,head[n];

inline void add_edge(int from,int to)

int dfn[n],tms,las[n];

void dfs(int u)

templateinline void read(t &res)

double check(double mid)

} return dp[n+1][k+1];

}int main()

dfs(0);

double l=0.0,r=10000.0;

while(r-l>=eps)

printf("%.3lf",l);

return 0;

}

JSOI 2016 最佳團體

有 n n 名候選人,從 1 role presentation 11到 n n 編號,有乙個隊長的編號為 0 role presentation 0 0,每個候選人都由一位編號比他小的候選人推薦 如果為 0 0 則表示是隊長推薦的 隊長希望招募 k role presentation k k個人,...

JSOI2016 最佳團體

題面 給定一棵樹,每個點有代價和價值,現在求乙個點集,使得點集中每個點的祖先也都在點集中,且點集中所有點的價值和 代價和最大。題解價值和 代價和最大 過於明顯的01分數規劃,直接把a mid j作為點權跑樹形dp,然後看f r oot 1 f root 1 f root 1 是否大於0即可。據說這題...

JSOI2016 最佳團體

嘟嘟嘟 01分數規劃 樹形揹包。然後就沒了。結果我調了半天,原因還是樹形揹包不熟練。我是用dfs序求的,轉化的時候,是dp i j 轉化到dp i 1 j 1 或dp i siz pos i j 而不是像普通的dp從別的狀態轉化到dp i j 所以最後的答案應該考慮到dp n 1 m 1 而不是只到...