洛谷1552 [APIO2012]派遣
洛谷1552 [APIO2012]派遣
原题链接
题解
luogu上被刷到了省选/NOI- 。。。不至于吧
这题似乎有很多办法乱搞?
对于一个点,如果他当管理者,那选的肯定是他子树中薪水最少的k个,而且这k个薪水之和<=m
k又要最大
可以维护n个可并堆(代码里是斜堆(不会左偏树)(平衡树启发式合并也行???))
每次dfs所有儿子,搞完以后再把儿子的堆与键值为自己薪水的节点全部merge起来,然后一直弹最大的弹到和<=m为止,然后用堆的size*L更新答案。
用大根堆维护。
Code
// It is made by XZZ
#include<cstdio>
#include<algorithm>
#define Fname "dispatching"
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
#define il inline
#define rg register
#define vd void
typedef long long ll;
il int gi(){
rg int x=0;rg char ch=getchar();
while(ch<'0'||ch>'9')ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x;
}
typedef struct node* point;
point null;
struct node{
int value,tot;
ll sum;
point ls,rs;
node(int _v){value=_v,ls=rs=null,sum=value,tot=1;}
il vd reset(){sum=ls->sum+rs->sum+value,tot=ls->tot+rs->tot+1;}
};
point merge(point a,point b){
if(a==null)return b;
if(b==null)return a;
if(a->value>b->value){a->rs=merge(a->rs,b);swap(a->ls,a->rs);a->reset();return a;}
else{b->rs=merge(b->rs,a);swap(b->ls,b->rs);b->reset();return b;}
}
int n,m;
const int maxn=100100;
int id,fir[maxn],nxt[maxn],dis[maxn];
int w[maxn],l[maxn];
point s[maxn];
point la,lb;
il vd add(int a,int b){nxt[++id]=fir[a],fir[a]=id,dis[id]=b;}
ll ans=0;
il vd dfs(int now){
erep(i,now)dfs(dis[i]),s[now]=merge(s[now],s[dis[i]]);
while(s[now]->sum>m){
la=s[now]->ls,lb=s[now]->rs;
delete s[now];
s[now]=merge(la,lb);
}
ans=max(ans,(ll)s[now]->tot*l[now]);
}
int main(){
freopen(Fname".in","r",stdin);
freopen(Fname".out","w",stdout);
n=gi(),m=gi();
int b;
gi(),w[1]=gi(),l[1]=gi();
rep(i,2,n)b=gi(),w[i]=gi(),l[i]=gi(),add(b,i);
null=new node(0);
null->ls=null->rs=null;
null->tot=null->sum=0;
rep(i,1,n)s[i]=new node(w[i]);
dfs(1);
printf("%lld\n",ans);
return 0;
}
PS.开long long...
洛谷1552 [APIO2012]派遣的更多相关文章
- 洛谷P1552 [APIO2012] 派遣 [左偏树,树形DP]
题目传送门 忍者 Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都 ...
- 2018.07.31洛谷P1552 [APIO2012]派遣(可并堆)
传送门 貌似是个可并堆的模板题,笔者懒得写左偏堆了,直接随机堆水过.实际上这题就是维护一个可合并的大根堆一直从叶子合并到根,如果堆中所有数的和超过了上限就一直弹直到所有数的和不超过上限为止,最后对于当 ...
- [洛谷P1552][APIO2012]派遣
题目大意:有一棵$n$个点的树,和一个费用$m$,每个点有一个费用和价值,请选一个点,再从它的子树中选取若干个点,使得那个点的价值乘上选的点的个数最大,要求选的点费用总和小于等于$m$ 题解:树形$d ...
- 洛谷P1552 [APIO2012]派遣(左偏树)
传送门 做这题的时候现学了一波左偏树2333(好吧其实是当初打完板子就给忘了) 不难发现肯定是选子树里权值最小的点且选得越多越好 但如果在每一个点维护一个小根堆,我们得一直找知道权值大于m为止,时间会 ...
- [洛谷P1552] [APIO2012]派遣(左偏树)
这道题是我做的左偏树的入门题,奈何还是看了zsy大佬的题解才能过,唉,我太弱了. 左偏树总结 Part 1 理解题目 很显然,通过管理关系的不断连边,最后连出来的肯定是一棵树,那么不难得出,当一个忍者 ...
- 洛谷 1552 [APIO2012]派遣
题目背景 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿. 题目描述 在这个帮派里,有一名忍者被称之为Master.除了Master以外,每名忍者都有且仅有一个上级.为保密 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
随机推荐
- [Python 练习爬虫] XPATH基础语法
XPATH语法: // 定位根标签 / 往下层寻找 /text() 提取文本内容 /@xxx 提取属性内容 Sample: import requests from lxml import etree ...
- JSP基本指令
jsp命令指令用来设置与整个jsp页面相关的属性,它并不直接产生任何可见的输出,而只是告诉引擎如何处理其余JSP页面.其一般语法形式为: <%@ 指令名称 属性=“值”%> 三种命令指令分 ...
- Spring中使用属性文件properties的两种方式
实际项目中,通常将可配置的参数放到属性文件中,例如数据库连接信息.redis连接信息等,便于统一管理.然后通过IoC框架spring将其加载到上下文中,使得程序可以直接使用. 创建mysql.prop ...
- EF Core中外键关系的DeleteBehavior介绍(转自MSDN)
Delete behaviors Delete behaviors are defined in the DeleteBehavior enumerator type and can be passe ...
- Java中的集合框架-Collections和Arrays
上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...
- Oracle 存储结构一
了解块中表行数据的存储 Oracle数据存储模型 逻辑结构在左,物理结构在右 有一个关系使用虚线绘制,表示段与数据文件的多对多关系.之所以使用虚线表示关系,是因为这种多对多关系不应存在. 表空间实体消 ...
- C# WebClient Get获取网页内容
//不知道怎么删除,只好留着 1. Get方式: WebClient web = new WebClient(); var html = web.DownloadString(url); 2. Pos ...
- Oracle 执行计划的查看方式
访问数据的方法:一.访问表的方法:1.全表扫描,2.ROWID扫描 二.访问索引的方法:1.索引唯一性扫描,2.索引范围扫描,3.索引全扫 ...
- 在vscode中使用webpack中安装的echarts文件失败,dom获取class名,图表不显示
所有的东西都是新学的,所以遇到了很多问题: (1)首先,在电脑上已经安装了node的情况下, 在npm中安装echarts:npm install echarts --save mac系统在最前面加上 ...
- 基于 HTML5 WebGL 的 3D 水泥工厂生产线
前言 今天为大家带来一个很酷的作品,依然运用了强大的 HT for Web 的 3D 图形组件,动作流畅性能好,大家可以先来欣赏一下效果! 点我进入! 整体风格为科技金属风,制作精良,由于上传 gif ...