题面 Bzoj2809 解析 按照贪心策略我们想选尽量多的人,所以就会选费用少的人,那么对于每个节点可以建一棵值域线段树,父亲的线段树由他的所有儿子的线段树合并再单点修改而来,这样就可以快速查询有多少个数满足要求, 线段树上维护人数以及费用和, 考虑到值域有1e9, 而人数只有1e5,我们考虑离散化 ...
刚开始怎么都不会做.如果M比较小,还可以用树形动态做 后来才发现读错题目了 然后就是一个比较容易的左偏树题目 然后贪心的考虑,肯定把小值选上,直到总和 include define rep(i , x, p) for(register int i = x;i = p; i) define gc ge ...
Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为 Master。除了 Master以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接下属,而不允许通过其 ...
这题老号用左偏树写过。 然后现在用了主席树,感觉理解加深了很多。 首先就是dfs序搞出每个节点管理的区间,然后暴力枚举每一个管理者,然后在区间里找最多能够支付多少人。 值得注意的是当前位置的值应该是排序后的数组的值而非原来当前位置的值,调了一中午。。 主席树: 左偏树: ...
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2809 知识点: 可持久化线段树、DFS序 解题思路: 先根据给出的树处理出每一点的\(DFS\)序,记录每一棵子树的最小(\(Le\))、最大(\(Ri\)) \(DFS\)序。先建一棵空的 ...
分类:
其他好文 时间:
2018-02-06 01:04:56
阅读次数:
202
给n<=100000的树,每个点有权值和代价,有m<=1e9的容量,问:一个点权值*子树内代价总和不超过容量的最大点数的最大值。 其实就是要合并。平衡树、线段树、可并堆挑一个。 可并堆由于没法二分,故“正难取反”,维护最大的,在不够装时弹掉。 1 #include<string.h> 2 #incl ...
http://www.lydsy.com/JudgeOnline/problem.php?id=2809 领导关系形成一棵树,那么答案为$ans=max{L[u]\times k}$,其中k代表以u为根的子树中选出的节点数个数(设这些节点为$v_1,v_2\cdots v_k$且有$\sum_{i= ...
左偏树。 每个子节点维护大根堆,遍历一个儿子就往自己合并,合并发现钱不够了就删除队顶。 //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #inclu ...
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2809 题意概括 n个点组成一棵树,每个点都有一个领导力和费用,可以让一个点当领导,然后在这个点的子树中选择一些费用之和不超过m的点,得到领导的领导力乘选择的点的个数(领导可不被选择)的利润。求利润最 ...
Background 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。 Description 在这个帮派里,有一名忍者被称之为Master。除了Master以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接 ...