【BZOJ 2809】 [Apio2012]dispatching
Description
Input
Output
Sample Input
0 3 3
1 3 5
2 2 2
1 2 4
2 3 1
Sample Output
HINT
如果我们选择编号为 1的忍者作为管理者并且派遣第三个和第四个忍者,薪水总和为 4,没有超过总预算 4。因为派遣了 2 个忍者并且管理者的领导力为 3,
用户的满意度为 2 ,是可以得到的用户满意度的最大值。
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int N=;
struct ee{int to,next;}e[];
int l[N],c[N],sz[N],n,m,head[N],cnt,a[N][],rt[N];
ll sum[N],ans;
void ins(int u,int v){
e[++cnt].to=v;e[cnt].next=head[u];head[u]=cnt;
}
int merge(int x,int y){
if(!x||!y) return x+y;
if(c[x]<c[y]) swap(x,y);
a[x][]=merge(a[x][],y);swap(a[x][],a[x][]);
return x;
} void dfs(int x){
sz[x]=;sum[x]=c[x];rt[x]=x;
for(int i=head[x];i;i=e[i].next){
int v=e[i].to;
dfs(v);sz[x]+=sz[v];sum[x]+=sum[v];
rt[x]=merge(rt[x],rt[v]);
}
while(sum[x]>m){
sum[x]-=c[rt[x]];sz[x]--;
rt[x]=merge(a[rt[x]][],a[rt[x]][]);
}
ans=max(ans,(ll)l[x]*sz[x]);
} int main(){
scanf("%d%d",&n,&m);
int x;
for(int i=;i<=n;i++){
scanf("%d%d%d",&x,&c[i],&l[i]);
if(x!=) ins(x,i);
}
dfs();
printf("%lld",ans);
}
【BZOJ 2809】 [Apio2012]dispatching的更多相关文章
- 【BZOJ 2809】2809: [Apio2012]dispatching (左偏树)
2809: [Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Maste ...
- 【BZOJ 2809】【APIO 2012】dispatching
昨天晚上zyf神犇问我的题,虽然我太弱参加不了APIO但也做一做吧. 用小数据拍了无数次总是查不出错来,交上去就WA,后来用国内数据测发现是主席树上区间相减的值没有用long long存,小数据真是没 ...
- 【BZOJ2809】[Apio2012]dispatching 可并堆
[BZOJ2809][Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 M ...
- 【BZOJ 1150】 1150: [CTSC2007]数据备份Backup (贪心+优先队列+双向链表)
1150: [CTSC2007]数据备份Backup Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设 ...
- Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路
首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最 ...
- 【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护
线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还 ...
- LCA 【bzoj 4281】 [ONTAK2015]Związek Harcerstwa Bajtockiego
[bzoj 4281] [ONTAK2015]Związek Harcerstwa Bajtockiego Description 给定一棵有n个点的无根树,相邻的点之间的距离为1,一开始你位于m点. ...
- 【bzoj2809】[Apio2012]dispatching 左偏树
2016-05-31 15:56:57 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2809 直观的思想是当领导力确定时,尽量选择薪水少的- ...
- 【BZOJ 1191】 [Apio2010]特别行动队 (斜率优化)
dsy1911: [Apio2010]特别行动队 [题目描述] 有n个数,分成连续的若干段,每段的分数为a*x^2+b*x+c(a,b,c是给出的常数),其中x为该段的各个数的和.求如何分才能使得各个 ...
随机推荐
- dedecms后台登录如何去除验证码设置
dedecms后台验证有时间输入总是不对,有时候却不显示,而输入验证码无疑是一个麻烦的过程,那么我们怎么样来去除后台验证码,实现输入帐号密码直接登录呢?我来为大家介绍一下: 让人感到烦恼的情况出现了! ...
- Loadrunner:error -86401 Failed to connceted xxx.xxx.xxx.xxx:25问题解决
[转自:http://www.51testing.com/html/00/130600-3578408.html]windows 2003上安装的LoadRunner11做为负载机在SMTP协议压测时 ...
- Linux之通配符与转义字符
通配符: *:代表任意字符,可以为空字符 ?:代表一个字符,不可以为空字符 转义字符: \
- leetcode 83
83. Remove Duplicates from Sorted List Given a sorted linked list, delete all duplicates such that e ...
- leetcode 36
36. Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudok ...
- JavaScript的匿名函数和模块化的使用方法
对于开发人员来说,很多时候我们都会涉及到JavaScript的使用,而在使用过程中,最令人沮丧的就是变量没有相应的使用范围. 在开发中,对于任何变量.数组.函数.对象等,只要不在函数的内部,都会被默认 ...
- win7如何设置某个软件不弹出用户账户控制
手动修改注册表: 在 HKEY_CURRENT_USERS\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 键下面 ...
- JS创建对象的方式
1.采用直接量创建方式:系统会使用new方式自动创建对象 var o = {x:1,y:2,z:2}; 2.采用new关键字创建对象:采用构造函数创建对象 var o = new Object();/ ...
- shell下添加计划性任务
*/1 * * * * /bin/sh /tmp/hello.sh ###每1分钟执行以下/tmp下的hello.sh脚本 service crond restart 重启任务计划 * 12 * ...
- c语言学习第四天数据类型1
int 代表整数,它在内存中占4个字节,二进制的表示方式是占用了三十二位,二进制中只包含0和1,那它的最大值就是全为1,但int是 有符号类型,所以最高位(左边的第一位)要拿出来做符号位,这样就只 ...