題面
給定一棵樹,每個點有代價和價值,現在求乙個點集,使得點集中每個點的祖先也都在點集中,且點集中所有點的價值和/代價和最大。
題解
價值和/代價和最大過於明顯的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自己總...