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