JSOI2016 最佳團體

2021-10-23 08:12:26 字數 1249 閱讀 2852

題面

給定一棵樹,每個點有代價和價值,現在求乙個點集,使得點集中每個點的祖先也都在點集中,且點集中所有點的價值和/代價和最大。

題解

價值和/代價和最大

過於明顯的01分數規劃,直接把a-mid*j作為點權跑樹形dp,然後看f[r

oot]

[1

]f[root][1]

f[root

][1]

是否大於0即可。

據說這題卡常,所以我不打算寫。

放個題解的**:

#include

#include

#include

#define rep(i,st,ed) for (int i=st;i<=ed;++i)

#define fill(x,t) memset(x,t,sizeof(x))

const

double eps=

1e-4

;const

int n=

2505

;const

int e=

5005

;struct edge e[e]

;double f[n]

[n],tmp[n]

,v[n]

;int size[n]

,a[n]

,b[n]

;int ls[n]

,edcnt;

void

add_edge

(int x,

int y)

; ls[x]

=edcnt;

e[++edcnt]

=(edge)

; ls[y]

=edcnt;

}void

dfs(

int now,

int fa)

size[now]

+=size[e[i]

.y];

rep(j,

1,size[now]

) f[now]

[j]=tmp[j];}

}int

main

(void

)double l,r;

for(l=

0,r=

10000

;r-l>=eps;

)printf

("%.3lf\n"

, l)

;return0;

}

JSOI 2016 最佳團體

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

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 而不是只到...

JSOI2016 最佳團體

jsoi資訊學代表隊一共有n名候選人,這些候選人從1到n編號 方便起見,jyy的編號是0號。每個候選人都由一位編號比他小的候選人ri推薦 如果ri 0 則說明這個候選人是jyy自己看上的 為了保證團隊的和諧,jyy 需要保證,如果招募了候選人i,那麼候選人r 也一定需要在團隊中。當然了,jyy自己總...