在萌神的指點下學會了這道題。
先01分數規劃,二分答案, ∑s
∑p≤a
ns 即
∑s−∑
p×an
s≥0
那就重新計算點權wi
=si−
mid×
pi,轉成判定性問題:能否選擇一些點,使得總點權不小於0?
傳統的泛化揹包或者多叉轉二叉是o(
n3) 的。 ac
cord
ingt
oftm
2001
(萌神),dfs之後,在dfs序的序列上搞。 fi
j 表示在df
s 序序列上做了前
i 個點,已經選擇了
j個人的最大權值和。
那麼如果這個點選fi
j−>fi
+1,j
+1如果不選fi
j−>fi
+siz
ei,j
(表示跳過子樹轉移)
對於這個點選,子樹都不選的情況,能夠通過第乙個方程包含到。
//01分數規劃+樹形dp
#include
#include
#include
#define maxn 3000
#define eps 1e-8
using namespace std;
int tid[maxn], untid[maxn], head[maxn], to[maxn], nex[maxn], tot, k, n, size[maxn];
double p[maxn], s[maxn], w[maxn], f[maxn][maxn], mid;
inline void adde(int a, int b)
void dfs(int pos)
void init()
bool dp()
return f[n+2][k]>-eps;
}int main()
printf("%.3lf\n",l);
return 0;
}
bzoj 4753 Jsoi2016 最佳團體
description jsoi資訊學代表隊一共有n名候選人,這些候選人從1到n編號。方便起見,jyy的編號是0號。每個候選人都由一位 編號比他小的候選人ri推薦。如果ri 0則說明這個候選人是jyy自己看上的。為了保證團隊的和諧,jyy需要保證,如果招募了候選人i,那麼候選人ri 也一定需要在團隊...
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 需要保證...