APIO2012派遣
2809: [Apio2012]dispatching
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 1196 Solved: 586
[Submit][Status]
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 ,是可以得到的用户满意度的最大值。
Source
题解:
其实就是左偏树的模版题,思维上应该没有什么难度,主要就是实现的问题了
而左偏树我感觉最容易搞不懂的就是用什么来表示一棵左偏树---根指针
这个问题搞懂了,基本上就没什么问题了
uses math;
const maxn=;
type node=record
go,next:longint;
end;
var l,r,d,h,p,s,c,head,ll,fa,num:array[..maxn+] of int64;
q:array[..*maxn] of longint;
i,n,m,tot,tmp,root:longint;
ans:int64;
e:array[..maxn+] of node;
procedure swap(var x,y:int64);
var t:int64;
begin
t:=x;x:=y;y:=t;
end;
procedure insert(x,y:longint);
begin
inc(tot);
e[tot].go:=y;e[tot].next:=head[x];head[x]:=tot;
end;
procedure init;
begin
readln(n,m);
for i:= to n do
begin
readln(fa[i],c[i],ll[i]);
if fa[i]<> then insert(fa[i],i) else root:=i;
end;
end;
function merge(x,y:int64):int64;
begin
if x*y= then exit(x+y);
if d[x]<d[y] then swap(x,y);
r[x]:=merge(r[x],y);
if h[l[x]]<h[r[x]] then swap(l[x],r[x]);
num[x]:=num[l[x]]+num[r[x]]+;
s[x]:=s[l[x]]+s[r[x]]+c[x];
h[x]:=h[r[x]]+;
exit(x);
end;
function del(x:longint):longint;
begin
exit(merge(l[x],r[x]));
end;
function work(x:longint):longint;
var i,y,t:longint;
begin
t:=x;
d[x]:=c[x];s[x]:=c[x];num[x]:=;
i:=head[x];
while i<> do
begin
y:=e[i].go;
t:=merge(t,work(y));
i:=e[i].next;
end;
while s[t]>m do t:=del(t);
ans:=max(ans,num[t]*ll[x]);
exit(t);
end;
procedure main;
begin
ans:=;
tmp:=work(root);
writeln(ans);
end;
begin
assign(input,'dispatching.in');assign(output,'dispatching.out');
reset(input);rewrite(output);
init;
main;
close(input);close(output);
end.
APIO2012派遣的更多相关文章
- 数据结构,可并堆(左偏树):COGS [APIO2012] 派遣
796. [APIO2012] 派遣 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿. 在这个帮派里,有一名忍者被称之为Master.除了Master以外,每名忍者都有且 ...
- [APIO2012]派遣
[APIO2012]派遣 题目大意: 给定一棵\(n(n\le10^5)\)个结点的有根树,每个点有代价\(c_i\)和权值\(l_i\),要求你选定一个结点\(k\),并在对应的子树中选取一个点集\ ...
- [luogu P1552] [APIO2012]派遣
[luogu P1552] [APIO2012]派遣 题目背景 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿. 题目描述 在这个帮派里,有一名忍者被称之为Master.除 ...
- 洛谷1552 [APIO2012]派遣
洛谷1552 [APIO2012]派遣 原题链接 题解 luogu上被刷到了省选/NOI- ...不至于吧 这题似乎有很多办法乱搞? 对于一个点,如果他当管理者,那选的肯定是他子树中薪水最少的k个,而 ...
- [APIO2012]派遣 左偏树
P1552 [APIO2012]派遣 题面 考虑枚举每个节点作为管理者,计算所获得的满意程度以更新答案.对于每个节点的计算,贪心,维护一个大根堆,每次弹出薪水最大的人.这里注意,一旦一个人被弹出,那么 ...
- BZOJ2809&&LG1552 APIO2012派遣(线段树合并)
BZOJ2809&&LG1552 APIO2012派遣(线段树合并) 题面 自己找去 HINT 简化一题面就是让你从每个点的子树中以\(<=m\)的代价选取尽可能多的点,然后乘上 ...
- 洛谷P1552 [APIO2012] 派遣 [左偏树,树形DP]
题目传送门 忍者 Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都 ...
- APIO2012 派遣dispatching | 左偏树
题目链接:戳我 就是尽可能地选取排名小的,加起来就可以了.然后我们考虑利用一个大根堆,一个一个合并,如果超过派遣的钱,我们就把费用最大的那个忍者丢出队列. 左偏树,作为一个十分优秀的可并堆,我们这道题 ...
- XSY1036 [Apio2012]派遣
题面 Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都有且仅有一个 ...
随机推荐
- 手把手教你写LKM rookit! 之 第一个lkm程序及模块隐藏(一)
唉,一开始在纠结起个什么名字,感觉名字常常的很装逼,于是起了个这<手把手教你写LKM rookit> 我觉得: 你们觉得:...... 开始之前,我们先来理解一句话:一切的操作都是系统调用 ...
- asp.net web form中 用attribute实现权限验证方式
以前项目的代码比较陈旧,今天抽空优化了一下.作为记录. 以前每次请求一个方法都要验证是否登录 if xxx等 现在通过global文件中的改进 反射这个方法的属性是否需要权限 要的话先验证权限.以下 ...
- (转)Mac OS X内核编程,MAC驱动开发资源汇总
一.Mac OS X内核编程开发官方文档: I/O Kit Fundamentals: I/O Kit基础 - Mac OS X系统内核编程 https://developer.apple.com ...
- Java中的break与continue区别
break跳出当前循环执行循环下面的程序, 如果break出现在嵌套循环的内层循环, 则break语句只会跳出当前层的循环; 当程序执行到continue时时, 则跳过本次循环程序重新回到循环开始继续 ...
- python学习笔记7(使用字符串)
一.字符串格式化,在%左侧放置一个字符串,右侧放置希望格式化的值. >>> format = 'Hello,%s,%s enough for ya?' >>> va ...
- embed标签遮住div层
依然是上次的那个返工友情项目,当时帮忙用jquery ui写了一个漂浮的投票箱,就是类似点击一个项目然后就收藏到了投票箱中的效果.. 虽然不是很复杂,但是由于页面上有大面积的由kindeditor上传 ...
- .NET 反射详解(转)
概述反射 通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象. 反射机制允许程序在执行过程中动态地添加各种功能. 运行时类型标识 运行时类型标识(RTTI),可以在 ...
- sql之left join、right join、inner join的区别(转)
感谢:http://www.cnblogs.com/pcjim/articles/799302.html ----------------------------------------------- ...
- Javascript字典操作
<script type="text/javascript"> var dic = new Array(); //注意它的类型是Array ...
- python常用web框架性能测试(django,flask,bottle,tornado)
测了一下django.flask.bottle.tornado 框架本身最简单的性能.对django的性能完全无语了. django.flask.bottle 均使用gunicorn+gevent启动 ...