bzoj 3252 攻略 长链剖分思想+贪心
攻略
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 889 Solved: 423
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
4 3 2 1 1
1 2
1 5
2 3
2 4
Sample Output
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<queue>
#include<ext/pb_ds/priority_queue.hpp> #define ll long long
#define pa pair<ll,int>
#define N 200007
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
} int n,K;
int val[N],last[N];
ll mx[N],ans;
int cnt,hed[N],rea[N],nxt[N];
__gnu_pbds::priority_queue<pa >::point_iterator id[N];
__gnu_pbds::priority_queue<pa >q; void add(int u,int v)
{
nxt[++cnt]=hed[u];
hed[u]=cnt;
rea[cnt]=v;
}
void dp(int x)
{
for(int i=hed[x];~i;i=nxt[i])
{
int v=rea[i];
dp(v);
mx[x]=max(mx[x],mx[v]);
}
mx[x]+=val[x];
id[x]=q.push(make_pair(mx[x],x));
}
void del(int x)
{
q.erase(id[x]);
for(int i=hed[x];~i;i=nxt[i])
{
int v=rea[i];
if(mx[v]==mx[x]-val[x])
{
del(v);
break;
}
}
}
int main()
{
memset(hed,-,sizeof(hed));
n=read(),K=read();
for(int i=;i<=n;i++)
val[i]=read();
for(int i=;i<n;i++)
{
int u=read(),v=read();
add(u,v);
}
dp();
for(int i=;i<=K&&!q.empty();i++)
{
int x=q.top().second;
ans+=mx[x];
del(x);
}
printf("%lld\n",ans);
}
bzoj 3252 攻略 长链剖分思想+贪心的更多相关文章
- bzoj 3252: 攻略 -- 长链剖分+贪心
3252: 攻略 Time Limit: 10 Sec Memory Limit: 128 MB Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神 ...
- BZOJ3252攻略——长链剖分+贪心
题目描述 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏.今天他得到了一款新游戏<XX 半岛>,这款游戏有n个场景(scene),某 ...
- BZOJ[3252]攻略(长链剖分)
BZOJ[3252]攻略 Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏.今天他得到了一款新游戏<XX半岛> ...
- 【BZOJ3252】攻略(长链剖分,贪心)
[BZOJ3252]攻略(长链剖分,贪心) 题面 BZOJ 给定一棵树,每个点有点权,选定\(k\)个叶子,满足根到\(k\)个叶子的所有路径所覆盖的点权和最大. 题解 一个假装是对的贪心: 每次选择 ...
- BZOJ.3252.攻略(贪心 长链剖分/线段树)
题目链接 贪心,每次选价值最大的一条到根的链.比较显然(不选白不选). 考虑如何维护这个过程.一个点的价值选了就没有了,而它只会影响它子树里的点,可以用DFS序+线段树修改.而求最大值也可以用线段树. ...
- 【刷题】BZOJ 3252 攻略
Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏.今天他得到了一款新游戏<XX 半岛>,这款游戏有n个场景(s ...
- bzoj 3252: 攻略
3252: 攻略 Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏. 今天他得到了一款新游戏<XX半岛>, ...
- 【贪心】 BZOJ 3252:攻略
3252: 攻略 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 261 Solved: 90[Submit][Status][Discuss] De ...
- CF Contest 526 G. Spiders Evil Plan 长链剖分维护贪心
LINK:Spiders Evil Plan 非常巧妙的题目. 选出k条边使得这k条边的路径覆盖x且覆盖的边的边权和最大. 类似于桥那道题还是选择2k个点 覆盖x那么以x为根做长链剖分即可. 不过这样 ...
随机推荐
- 【转】MMO即时战斗:地图角色同步管理和防作弊实现
---转自CSDN 一.前言 无论是端游.页游.手游如果是采用了MMO即时战斗游戏模式,基本都会遇到同屏多角色实时移动.释放技能.战斗等场景,于是自然也需要实现如何管理同屏内各种角色的信息同步:例如角 ...
- CMD Markdown basic & Math Cheatsheet
CMD Markdown basic & Math Cheatsheet I am using CMD Markdown both at work and for study.You can ...
- Simple Expression
Description You probably know that Alex is a very serious mathematician and he likes to solve seriou ...
- Java学习个人备忘录之关键字final
final关键字final可以修饰类,方法,变量.final修饰的类不可以被继承final修饰的方法不可以被覆盖final修饰的变量是一个常量.只能被赋值一次.内部类只能访问被final修饰的局部变量 ...
- python执行linux命令的两种方法
python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: 方法一:使用os模块 1 2 3 shell# python >> import os >> ...
- js jQuery 判断跳转是手机还是电脑
<script type="text/javascript"> $(function () { var system = {}; var p = navigator.p ...
- 第四章 持续集成jenkins工具使用之项目配置
1.1 创建项目 点击“新建”,输入项目名称,选择“构建一个自由风格的软件项目”,点击ok,项目创建完成. 1.2 配置项目 点击步骤1创建的项目,进入项目页面,如图: 点击“配置”,进入配置 ...
- C# #pragma warning disable/restore
#pragma warning 可以启用或禁用特定警告. 语法 #pragma warning disable warning-list #pragma warning restore warning ...
- ifstat查看网络流量的原理
ifstat查看网卡流量的原理:读的是哪个/proc/ 接口啊 同diskIO一样,网络的IO也同样有统计计数的,是/proc/net/dev一个典型的输出就是这个样子的: root@station6 ...
- React & `event.persist()`
React & event.persist() event.persist() https://reactjs.org/docs/events.html#event-pooling Tabs ...