APIO dispatching
题目描述
1 ≤Li ≤ 1,000,000,000 忍者的领导力水平。
输入
输出
输出一个数,表示在预算内顾客的满意度的最大值。
样例输入
样例输出
提示
如果我们选择编号为 1的忍者作为管理者并且派遣第三个和第四个忍者,薪水总和为 4,没有超过总预算4。因为派遣了2个忍者并且管理者的领导力为3,用户的满意度为 2 ,是可以得到的用户满意度的最大值。
树形结构的左偏堆
每次递归到节点x,将他子节点的大根堆合并,并算出x子节点预算的和,和子节点数量(包括自己)
大根堆维护忍者的预算。
x子节点的预算和如果>m,则将堆顶元素去掉,子节点和减去。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct node
{
long long key;
int dis;
node *l,*r;
int ldis()
{
return l?l->dis:;
}
int rdis()
{
return r?r->dis:;
}
} S[];
node* pos=S;
node* root[];
struct Messi
{
int next,to;
} edge[];
int head[],num,n,m;
long long sum[],lead[],size[],val[],ans;
void add(int u,int v)
{
num++;
edge[num].next=head[u];
head[u]=num;
edge[num].to=v;
}
node* merge(node *a,node *b)
{
if (!a||!b) return a?a:b;
if (a->key<b->key) swap(a,b);
a->r=merge(a->r,b);
if (a->ldis()<a->rdis()) swap(a->l,a->r);
a->dis=a->rdis()+;
return a;
}
void Delet(int t)
{
node *R=root[t]->r;
node *L=root[t]->l;
root[t]=merge(R,L);
}
void dfs(int x)
{int i;
sum[x]=val[x];size[x]=;
for (i=head[x]; i; i=edge[i].next)
{
int v=edge[i].to;
dfs(v);
root[x]=merge(root[x],root[v]);
sum[x]+=sum[v];size[x]+=size[v];
}
while (sum[x]>m)
{
sum[x]-=root[x]->key;
size[x]--;
Delet(x);
}
ans=max(ans,(long long)lead[x]*size[x]);
}
int main()
{int i,x;
scanf("%d%d",&n,&m);
for (i=; i<=n; i++)
{
scanf("%d%lld%lld",&x,&val[i],&lead[i]);
add(x,i);
root[i]=pos++;
root[i]->l=root[i]->r=;
root[i]->dis=;
root[i]->key=val[i];
}
dfs();
printf("%lld\n",ans);
}
APIO dispatching的更多相关文章
- 【BZOJ 2809】【APIO 2012】dispatching
昨天晚上zyf神犇问我的题,虽然我太弱参加不了APIO但也做一做吧. 用小数据拍了无数次总是查不出错来,交上去就WA,后来用国内数据测发现是主席树上区间相减的值没有用long long存,小数据真是没 ...
- 「BZOJ 2809」「APIO 2012」Dispatching「启发式合并」
题意 给定一个\(1\)为根的树,每个点有\(c,w\)两个属性,你需要从某个点\(u\)子树里选择\(k\)个点,满足选出来的点\(\sum_{i=1}^k w(i)\leq m\),最大化\(k\ ...
- BZOJ 2809 APIO 2012 dispatching 平衡树启示式合并
题目大意:给出一棵树,每个节点有两个值,各自是这个忍者的薪水和忍者的领导力.客户的惬意程度是这个点的领导力乘可以取得人数.前提是取的人的薪水总和不超过总的钱数. 思路:仅仅能在子树中操作.贪心的想,我 ...
- SYSU 6356 Dispatching
Dispatching Time Limit: 3000ms Memory Limit: 262144KB This problem will be judged on SYSU. Original ...
- BZOJ2809: [Apio2012]dispatching
传送门 主席树经典题. 首先把树搞出来,然后搞出来DFS序.然后离散化点权,在DFS序上建立主席树. 对于每个点对应的区间,查找对应的区间最大的点数即可. //BZOJ2809 //by Cydiat ...
- 【BZOJ 1177】【APIO 2009】Oil
http://www.lydsy.com/JudgeOnline/problem.php?id=1177 前缀和优化,时间复杂度$O(nm)$ 因为数据不全,快速读入会导致RE,切记! #includ ...
- 2015 CTSC & APIO滚粗记
o诶人太弱..... 记一发滚粗记以便治疗我的健忘症= = //文章会不定时修改,添加一些内容什么的...因此最好看一下刷新一下(因为有可能你正在看= =我正在写... 5.2 早上9点坐上长达11小 ...
- 【bzoj2809】[Apio2012]dispatching 左偏树
2016-05-31 15:56:57 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2809 直观的思想是当领导力确定时,尽量选择薪水少的- ...
- CTSC&&APIO 2015 酱油记
在北京待了一周多,还是写点记录吧. 人民大学校园还是挺不错的,不过伙食差评. CTSC的题目太神,根本不会搞,一试20二试10分..本来都寄希望于提交答案题的..结果就悲剧了. 然后是听大爷们的论文答 ...
随机推荐
- 每日冲刺报告——Day2(Java-Team)
第二天报告(11.3 周五) 团队:Java-Team 成员: 章辉宇(284) 吴政楠(286) 陈阳(PM:288) 韩华颂(142) 胡志权(143) github地址:https://git ...
- 学生ID查询
var http = require("http"); var server = http.createServer(function(req,res){ //得到url var ...
- Appium+python测试app实例
Appium和selenium差不到,只是一个用于测web,一个用于测APP.下面记录一下我搭的测试框架,同样是基于PO模式,用的unittest. 最后测试报告如下: 1.1 代码结构 这 ...
- Python爬虫之urllib模块2
Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...
- JAVA版exe可执行加密软件
1.现在eclipse(myeclipse)中插入以下代码 1.1 MainForm package cee.hui.myfile; import javax.swing.*; import java ...
- Echarts 中国地图(包括china.js文件)
用Echarts写中国地图需要导入china.js(现在官方不提供下载,个人找的在最下面有),根据需要的效果如下.位置可以自己在option里面修改 <!DOCTYPE html> < ...
- C# 基于Bootstrap的三级联动
实现效果如图: 一.声明市.县.乡对应的下拉控件select <div class="form-group"> <label class="col-sm ...
- idea中,发现某个java语法在低版本中不支持时的解决办法
比如,在某个工程中,准备用java.util.Objects#equals语法,发现提示版本不支持. F4查看Module的配置,发现原来是1.6版本. 当我手动修改为1.8时,提示我:Module是 ...
- mybatis配置多数据源(利用spring的AbstractRoutingDataSource)
主要是利用了spring的AbstractRoutingDataSource. 直接上配置了: spring-mybatis.xml <bean name="dataSource&qu ...
- Orm之中介模型
什么是中介模型 中介模型针对的是ManyToMany(多对多)的时候第三张表的问题, 中介模型其实指的就是我们不通过Django创建第三张表,如果自己不创建第三张表,而是由django给我们创建,那就 ...