题目

洛谷 P4322 [JSOI2016]最佳团体

Description

茜茜的舞蹈团队一共有\(N\)名候选人,这些候选人从\(1\)到\(N\)编号。方便起见,茜茜的编号是\(0\)号。每个候选人都由一位编号比他小的候选人\(R_i\)推荐。如果\(R_i=0\)则说明这个候选人是茜茜自己看上的。为了保证团队的和谐,茜茜需要保证,如果招募了候选人\(i\),那么候选人\(R_i\)也一定需要在团队中。当然了,茜茜自己总是在团队里的。每一个候选人都有一个能力值\(P_i\),也有一个招募费用\(S_i\)。茜茜希望招募\(K\)个候选人(茜茜自己不算),组成一个性价比最高的团队。也就是,这\(K\)个被茜茜选择的候选人的总能力值与总招募总费用的比值最大。

Input

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

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

Output

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

Sample Input 1

1 2
1000 1 0
1 1000 1

Sample Output 1

0.001

Hint

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

思路 0/1分数规划+树形DP

几乎是裸的0/1分数规划,于是二分答案,问题转化为与选课一模一样的树上背包问题,可以用树形DP在\(O(nk^2)\)的时间复杂度内求解.

可是我们定睛一看,\(1\le K\le N\le 2500\).

所以\(O(nk^2)\)的复杂度是无法接受的.

这时我们想到,在洛谷P2014 选课 题解中,有许多大佬提到可以通过在DFS序上DP的方法,把一次树形DP的时间复杂度降为\(O(nk)\).但是我不会啊

[JSOI2016]最佳团体 DFS序/树形DP的更多相关文章

  1. 【bzoj4753】[Jsoi2016]最佳团体 分数规划+树形背包dp

    题目描述 JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人都由一位编号比他小的候选人Ri推荐.如果Ri=0则说明这个候选人是JYY自己看上的.为了 ...

  2. hdu_5293_Tree chain problem(DFS序+树形DP+LCA)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5293 被这题打蹦了,看着题解写的,很是爆炸,确实想不到,我用的DFS序+LCA+树形DP,当然也可以写 ...

  3. BZOJ.4753.[JSOI2016]最佳团体(01分数规划 树形背包DP)

    题目链接 \(Description\) 每个点有费用si与价值pi,要求选一些带根的连通块,总大小为k,使得 \(\frac{∑pi}{∑si}\) 最大 \(Solution\) 01分数规划,然 ...

  4. BZOJ_4753_[Jsoi2016]最佳团体_树形背包+01分数规划

    BZOJ_4753_[Jsoi2016]最佳团体_树形背包+01分数规划 Description JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人 ...

  5. BZOJ 4753 [Jsoi2016]最佳团体 | 树上背包 分数规划

    BZOJ 4753 [Jsoi2016]最佳团体 | 树上背包 分数规划 又是一道卡精度卡得我头皮发麻的题-- 题面(--蜜汁改编版) YL大哥是24OI的大哥,有一天,他想要从\(N\)个候选人中选 ...

  6. BZOJ4753: [Jsoi2016]最佳团体(分数规划+树上背包)

    BZOJ4753: [Jsoi2016]最佳团体(分数规划+树上背包) 标签:题解 阅读体验 BZOJ题目链接 洛谷题目链接 具体实现 看到分数和最值,考虑分数规划 我们要求的是一个\(\dfrac{ ...

  7. 【bzoj4182】Shopping 树的点分治+dfs序+背包dp

    题目描述 给出一棵 $n$ 个点的树,每个点有物品重量 $w$ .体积 $c$ 和数目 $d$ .要求选出一个连通子图,使得总体积不超过背包容量 $m$ ,且总重量最大.求这个最大总重量. 输入 输入 ...

  8. [Jsoi2016]最佳团体 BZOJ4753 01分数规划+树形背包/dfs序

    分析: 化简一下我们可以发现,suma*ans=sumb,那么我们考虑二分ans,之后做树形背包上做剪枝. 时间复杂度证明,By GXZlegend O(nklogans) 附上代码: #includ ...

  9. BZOJ4753 JSOI2016最佳团体(分数规划+树形dp)

    看到比值先二分答案.于是转化成一个非常裸的树形背包.直接暴力背包的话复杂度就是O(n2),因为相当于在lca处枚举每个点对.这里使用一种更通用的dfs序优化树形背包写法.https://www.cnb ...

随机推荐

  1. matlab 中 find() 函数用法

    一. 功能: 寻找非零元素的索引和值 二.相关函数语法: ind = find(X) ind = find(X, k) ind = find(X, k, 'first') ind = find(X, ...

  2. nvm Nodejs 版本管理器 安装及配置

    1.如果已安装nodejs请先卸载干净 nodejs:删除C:\Program Files\nodejs 文件夹 npm:删除C:\Users\{用户名}\AppData\Roaming\npm 文件 ...

  3. 10.HanLP实现k均值--文本聚类

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 10. 文本聚类 正所谓物以类聚,人以群分.人们在获取数据时需要整理,将相似的数据 ...

  4. .net 父类值赋给子类

    1.最简单的方式,反射+泛型 优点:字段修改时,无需更改代码,只需要更新实体即可 缺点:因为用到反射,可能效率会稍微弱那么一点点,没有实际用太多字段测试 public static cClass Pa ...

  5. linux中安装nginx时查看修改80端口时没有iptables文件的内容?? 求解

  6. gulp常用插件之del使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 del这是一款删除文件的工具. 更多使用文档请点击访问del工具官网. 安装 npm install del API del(patterns, ...

  7. Beego的参数配置

    参数配置 beego 目前支持 INI.XML.JSON.YAML 格式的配置文件解析,但是默认采用了 INI 格式解析,用户可以通过简单的配置就可以获得很大的灵活性.默认配置解析 beego 默认会 ...

  8. 敌兵布阵 HDU - 1166 板子题

    #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...

  9. Linux X_window与文本模式的切换

    用x_window启动的情况下的切换方法: [Ctrl] + [Alt] + [F1] ~ [F6]  :文字接口登陆 tty1 ~ tty6 终端机: [Ctrl] + [Alt] + [F7]   ...

  10. exe 发布为服务

    参考连接: https://www.cnblogs.com/liuxiaoji/p/8016261.html 1.有两个文件 srvany.exe,instsrv.exe 然后放到指定的文件下下: 2 ...