P4322 [JSOI2016] 最佳团体

P4322 [JSOI2016] 最佳团体

题目描述

JSOI 信息学代表队一共有 \(N\) 名候选人,这些候选人从 \(1\)\(N\) 编号。方便起见,JYY 的编号是 \(0\) 号。每个候选人都由一位编号比他小的候选人\(R_i\) 推荐。如果 \(R_i = 0\),则说明这个候选人是 JYY 自己看上的。

为了保证团队的和谐,JYY 需要保证,如果招募了候选人 \(i\),那么候选人 \(R_i\) 也一定需要在团队中。当然了,JYY 自己总是在团队里的。每一个候选人都有一个战斗值 \(P_i\) ,也有一个招募费用 \(S_i\) 。JYY 希望招募 \(K\) 个候选人(JYY 自己不算),组成一个性价比最高的团队。也就是,这 \(K\) 个被 JYY 选择的候选人的总战斗值与总招募费用的比值最大。

输入格式

输入一行包含两个正整数 \(K\)\(N\)

接下来 \(N\) 行,其中第 \(i\) 行包含三个整数 \(S_i\) , \(P_i\) , \(R_i\) ,
表示候选人 \(i\) 的招募费用,战斗值和推荐人编号。

输出格式

输出一行一个实数,表示最佳比值。答案保留三位小数。

输入输出样例 #1

输入 #1

1 2
1000 1 0
1 1000 1

输出 #1

0.001

说明/提示

对于100%的数据满足\(1≤K≤N≤2500\),\(0<S_i,P_i≤10^4\) ,
\(0\) \(≤\) \(R_i\) \(<\) \(i\)

思路

这道题是分数规划,那么二分答案 $ \omega $ 。

对于 $\forall \omega $ ,都一定存在一种选择方案使得 \(\dfrac{\sum P_i}{\sum S_i} \ge \omega\)

移项得 \(\sum P_i-\omega \cdot \sum S_i \ge 0\) ,

也就是说只要 \(\omega\) 合法,那就一定存在一种方案使得 \(\sum(P_i-\omega S_i)\ge 0\)

那么问题就转化成了就是在树上选择 \(k\) 个点,使得 \(\sum(P_i-\omega S_i)\) 最大,并在最后检查结果是否大于等于 \(0\) 就可以了。

因此在二分之后就可以直接把每一个点的点权变为 \((P_i-\omega S_i)\) 然后做一遍树上背包。

树上背包时间复杂度 \(O(NK)\) ,二分答案 \(O(\log_2 N)\) 总时间复杂度 \(O(NK\log_2N)\)

直接给我AC

posted @ 2025-07-29 16:26  shencheng4014  阅读(7)  评论(0)    收藏  举报