BZOJ2809 dispatching 【可并堆】
题目分析:
yy一下就知道了,合并用可并堆少个log。
代码:
#include<bits/stdc++.h>
using namespace std; const int maxn = ; int n,m;
int b[maxn],c[maxn],l[maxn],sz[maxn];
long long tot[maxn];
int dis[maxn],val[maxn],ch[maxn][],pts[maxn];
vector <int> g[maxn];
long long ans = ; int merge(int r1,int r2){
if(r1 == ) return r2; if(r2 == ) return r1;
if(val[r1] > val[r2]){
ch[r1][] = merge(ch[r1][],r2);
if(dis[ch[r1][]] < dis[ch[r1][]]) swap(ch[r1][],ch[r1][]);
if(ch[r1][]) dis[r1] = dis[ch[r1][]] + ;
else dis[r1] = ;
return r1;
}else{
ch[r2][] = merge(r1,ch[r2][]);
if(dis[ch[r2][]] < dis[ch[r2][]]) swap(ch[r2][],ch[r2][]);
if(ch[r2][]) dis[r2] = dis[ch[r2][]] + ;
else dis[r2] = ;
return r2;
}
} void read(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d%d%d",&b[i],&c[i],&l[i]);
for(int i=;i<=n;i++){g[b[i]].push_back(i);}
} void dfs(int now){
for(int i=;i<g[now].size();i++){
dfs(g[now][i]);
sz[now] += sz[g[now][i]];
tot[now] += tot[g[now][i]];
}
sz[now]++; tot[now] += c[now];
for(int i=;i<g[now].size();i++)pts[now]=merge(pts[now],pts[g[now][i]]);
while(tot[now] > m){
tot[now] -= val[pts[now]];sz[now]--;
pts[now] = merge(ch[pts[now]][],ch[pts[now]][]);
}
ans = max(ans,1ll*l[now]*sz[now]);
} void work(){
for(int i=;i<=n;i++) pts[i] = i,val[i] = c[i];
dfs(g[][]);
printf("%lld",ans);
} int main(){
read();
work();
return ;
}
BZOJ2809 dispatching 【可并堆】的更多相关文章
- 【BZOJ2809】[Apio2012]dispatching 可并堆
[BZOJ2809][Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 M ...
- bzoj1455: 罗马游戏 + bzoj2809: Dispatching(可并堆)
昨天看了可并堆是什么,写的是左偏树 大概就是一棵树 1.有左偏性质,即当前根到左叶子节点距离比到右叶子节点距离大 2.有堆性质,堆顶关键字比子树关键字小 合并两个堆的时候,关键字大的插入到关键字小的那 ...
- BZOJ2809 [Apio2012]dispatching 可并堆
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2809 题意概括 n个点组成一棵树,每个点都有一个领导力和费用,可以让一个点当领导,然后在这个点的子 ...
- bzoj 2809: [Apio2012]dispatching -- 可并堆
2809: [Apio2012]dispatching Time Limit: 10 Sec Memory Limit: 128 MB Description 在一个忍者的帮派里,一些忍者们被选中派 ...
- [BZOJ2809]dispatching
Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都有且仅有一个上级. ...
- BZOJ 2809 [Apio2012]dispatching(斜堆+树形DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2809 [题目大意] 给出一棵树,求出每个点有个权值,和一个乘算值,请选取一棵子树, 并 ...
- BZOJ2809 dispatching(左偏树)
在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都有且仅有一个上级.为保密,同时增强忍者们的 ...
- 2809: [Apio2012]dispatching 可并堆 左偏树
https://www.lydsy.com/JudgeOnline/problem.php?id=2809 板子题wa了一下因为输出ans没有lld #include<iostream> ...
- 【bzoj2809】[Apio2012]dispatching 贪心+可并堆
题目描述 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都有且仅有一个上级.为保密,同时增 ...
随机推荐
- 深入理解Redis的持久化
RDB RDB是将当前数据生成快照保存到硬盘上. RDB的工作流程: 1. 执行bgsave命令,Redis父进程判断当前是否存在正在执行的子进程,如RDB/AOF子进程,如果存在bgsave命令直接 ...
- Windows Community Toolkit 3.0 - CameraPreview
概述 Windows Community Toolkit 3.0 于 2018 年 6 月 2 日 Release,同时正式更名为 Windows Community Toolkit,原名为 UWP ...
- OSGI 环境搭建
第一步,打开eclipse,新建一个plugin工程,如下图所示 第二步,输入工程的名字,并且在Target Platform中选择an OSGI framework中选中standard,如下图所示 ...
- 我的微信小程序第三篇(app.json)
前言 端午节回家了,所以好多天没有更新,只想说还是待在家里舒服呀,妈妈各种做好吃的,小侄子侄女各种粘着我在室外玩,导致我三天下来不仅胖了一圈,还黑了一圈,上班第一天有同事就说我晒黑了,哭~~~,为了防 ...
- Docker Compose vs. Dockerfile
Docker Compose vs. Dockerfile - which is better? - Stack Overflowhttps://stackoverflow.com/questions ...
- Eclipse支持文件UTF-8编码
Eclipse修改编码格式_百度经验https://jingyan.baidu.com/article/2009576193ee38cb0721b416.html 这篇最棒 如何为eclipse中的文 ...
- asp.net mvc或者其他程序无法打开excel——解决方案,C#处理Excel文件
问题描述:今天处理Excel时遇到一个问题,本地使用Microsoft.Jet.OLEDB.4.0处理,正常完成了需求, 上传到服务器后发生了异常,通过排查发现问题出现在对Excel文件的读取上,然后 ...
- laravel log改为时间格式
1 providers新建文件 LogRotateServiceProvider.php <?php namespace App\Providers; use Monolog\Formatter ...
- mac下php开发环境的搭建
1.phpstorm 在官网:https://www.jetbrains.com/phpstorm/,下载最新版:phpstorm-2016.2.1 在http://15.idea.lanyus.co ...
- Hbase 架构体系
有2个节点进程,一个是master,另一是regionserver.