*AtCoder Regular Contest 096F - Sweet Alchemy
$n \leq 50$的树,每个点有权值,现要选点(可多次选一个点)使点数尽量多,如下限制:选的总权值不超过$C \leq 1e9$;$c_i$表示$i$选的次数,$p_i$表示$i$的父亲,那么$c_{p_i} \leq c_i \leq c_{p_i}+D$,$D \leq 1e9$是给定常数。
看到这种奇怪不等式很讨厌嘛,差分一下,$d_i=c_i-c_{p_i}$,$d_1=c_1$(1是根),$d_i$表示$i$比$p_i$多选多少。这样一来就每个点都要比父亲多,那我的$0 \leq d_i \leq D$就相当于:每次同时把子树$i$的点选一次,不能选超过$D$次。
现在问题:$n$个东西,每个东西有权值$Y_i$(子树大小),有花费$X_i$(子树权值和),除了第一种物品其他都有限制次数$D$,然后要挑东西,问总花费在$C$以内的最大化的权值。
这不是小学生背包题嘛。。诶等等这范围不大对。
$n \leq 50,Y_i \leq 50$,其他可以很大。。。。
好吧。那来看这个新背包题。
依稀记得背包有一种错误的贪心解法:按权值花费比,大的先挑。这样会因为剩余空间的分配不合理导致GG。但从没考虑过它和正确答案的误差。
它之所以错的,就是最优答案里可能去掉了一些看起来好的,选了更多看起来不那么好的。就是说,如果把物品按照性价比从大到小排序,也就是$p<q$时有$Y_p/X_p \geq Y_q/X_q$。然后呢我就可能最优答案$p$少了一点,$q$多了一点。那到底差了多少呢,如果$p$有超过50个没选,$q$选了超过50个,那由于$Y_pX_q \geq Y_qX_p$,我把$X_p$个$q$换成$X_q$个$p$是更好的且花费一样。也就是没有差超过50个。
那我每个物品拿50个出来DP,剩下的贪心不就好了。。现在俩背包,一个把每种东西挑50个(或者D,看大小)个,然后做DP;另一个把剩下东西丢进去,做贪心。
额慢着,第一个背包还是DP不了。。但注意到总权值是$n^3$级别的,可以做一个$n^3*n*log_n$的DP。搞定。
*AtCoder Regular Contest 096F - Sweet Alchemy的更多相关文章
- AtCoder Regular Contest 096
AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
- AtCoder Regular Contest 102
AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...
- AtCoder Regular Contest 097
AtCoder Regular Contest 097 C - K-th Substring 题意: 求一个长度小于等于5000的字符串的第K小子串,相同子串算一个. K<=5. 分析: 一眼看 ...
随机推荐
- MVC简单登陆验证
配置文件: <system.web> <authentication mode="Forms"> <!-- 如果验证失败就返回URL的指定界面,设置c ...
- UVA 1664 Conquer a New Region (Kruskal,贪心)
题意:在一颗树上要求一个到其他结点容量和最大的点,i,j之前的容量定义为i到j的路径上的最小边容量. 一开始想过由小到大的去分割边,但是很难实现,其实换个顺序就很容易做了,类似kruskal的一个贪心 ...
- Luogu P4463 [国家集训队] calc
WJMZBMR的题果然放在几年后看来仍然挺神,提出了一种独特的优化DP的方式 首先我们想一个暴力DP,先定下所有数的顺序(比如强制它递增),然后最后乘上\(n!\)种排列方式就是答案了 那么我们容易想 ...
- dubbo 快速入门
1. 步骤 实现消费者调用生产者服务接口. 2.安装zookeeper 3.创建maven 工程 4.安装dobboadmin 平台实现监控 5.dubbo 目录结构 ------dubbo-mem ...
- BCB:AnsiString和String的区别
AnsiString和String的区别.使用 本文转自:http://www.bianceng.cn/c/index.htm 16.C/C++语言在CB中的一些特定用法 2)AnsiString是从 ...
- javascript的offset、client、scroll使用方法
offsetTop 指元素距离上方或上层控件的位置,整型,单位像素. offsetLeft 指元素距离左方或上层控件的位置,整型,单位像素. offsetWidth 指元素控件自身的宽度,整型,单位像 ...
- java在线聊天项目 实现基本聊天功能后补充的其他功能详细需求分析 及所需要掌握的Java知识基础 SWT的激活方法,swt开发包下载,及破解激活码
补充聊天项目功能,做如下需求分析: 梳理项目开发所需的必要Java知识基础 GUI将使用更快速的swt实现 SWT(Standard Widget Toolkit) Standard Widget T ...
- (7)zabbix资产清单inventory管理
概述 监控的设备越来越多,有时候搞不清楚哪台服务器是什么配置,大多公司有自己的资产清单,要去专门的系统查询显得多少有点麻烦.为此,zabbix专门设置了设备资产管理功能. 我们创建或编辑主机的时候,可 ...
- Java8特性详解 lambda表达式 Stream【转】
本文转自http://www.cnblogs.com/aoeiuv/p/5911692.html 1.lambda表达式 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有 ...
- 蓝牙学习(4) -- L2CAP
L2CAP in protocol 首先看一下L2CAP在Bluetooth protocol architecture diagram中的位置: Features of L2CAP Logical ...