bzoj3252: 攻略(贪心)
/*
因为权值都是正的, 所以贪心的正确性能保证
然后重链贪心跑一下就好了
*/
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<iostream>
#define ll long long
#define M 200010
#define mmp make_pair
using namespace std;
int read() {
int nm = 0, f = 1;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -1;
for(; isdigit(c); c = getchar()) nm = nm * 10 + c - '0';
return nm * f;
}
vector<int> to[M];
ll ver[M], sta[M], tp, top[M], son[M], n, k;
void dfs(int now, int fa) {
for(int i = 0; i < to[now].size(); i++) {
int vj = to[now][i];
if(vj == fa) continue;
dfs(vj, now);
if(ver[vj] > ver[son[now]]) son[now] = vj;
}
ver[now] += ver[son[now]];
}
void dfss(int now, int fa) {
if(top[now] == now) sta[++tp] = ver[now];
if(son[now]) {
top[son[now]] = top[now];
dfss(son[now], now);
}
for(int i = 0; i < to[now].size(); i++) {
int vj = to[now][i];
if(vj == fa || vj == son[now]) continue;
top[vj] = vj;
dfss(vj, now);
}
}
int main() {
n = read(), k = read();
for(int i = 1; i <= n; i++) ver[i] = read();
for(int i = 1; i < n; i++) {
int vi = read(), vj = read();
to[vi].push_back(vj);
to[vj].push_back(vi);
}
dfs(1, 1);
top[1] = 1;
dfss(1, 1);
sort(sta + 1, sta + tp + 1, greater<ll>() );
ll ans = 0;
for(int i = 1; i <= k; i++) ans += sta[i];
cout << ans << "\n";
return 0;
}
bzoj3252: 攻略(贪心)的更多相关文章
- BZOJ3252 攻略 贪心、长链剖分
传送门 给树竟直接给父子关系!!!真良心 首先一个贪心策略:每一次选择的链一定是所有链中权值最大的.这应该比较显然 那么我们接下来考虑如何维护这个贪心.我们可以使用长链剖分进行维护,对权值进行长链剖分 ...
- bzoj3252 攻略 贪心+dfs序+线段树
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3252 题解 有一个非常显然的贪心思路:每次选择目前走到那儿能够获得的新权值最大的点. 证明的话 ...
- [bzoj3252]攻略_dfs序_线段树_贪心
攻略 bzoj-3252 题目大意:给定一棵n个节点的有根树,点有点权.让你选出至多k个节点,使得他们到根的链的并最大. 注释:$1\le n\le 2\cdot 10^5$,$1\le val_i\ ...
- 【bzoj3252】攻略 贪心+DFS序+线段树
题目描述 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏. 今天他得到了一款新游戏<XX半岛>,这款游戏有n个场景(scene),某 ...
- BZOJ3252攻略——长链剖分+贪心
题目描述 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏.今天他得到了一款新游戏<XX 半岛>,这款游戏有n个场景(scene),某 ...
- BZOJ3252: 攻略
Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏. 今天他得到了一款新游戏<XX半岛>,这款游戏有n个场景 ...
- BZOJ3252 攻略 [树链剖分]
题目传送门 攻略 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1169 Solved: 554[Submit][Status][Discuss] ...
- bzoj3252 攻略 dfs序+线段树
题目传送门 题目大意:给出一棵树,1为根节点,每个节点都有权值,每个叶子节点都是一个游戏的结局,选择k个游戏结局,使得权值总和最大,同一个节点不会被重复计算. 思路:这道题最关键的是要想到一个性质,就 ...
- bzoj3252攻略(线段树+dfs序)
3252: 攻略 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 562 Solved: 238[Submit][Status][Discuss] D ...
随机推荐
- supervisord 知识点
官方英文: Supervisor: A Process Control System Supervisor: 一个进程管理系统. Supervisor is a client/server syste ...
- instanceof isInstance isAssignableFrom 比较
instanceof : java 的关键字 判断一个 实例对象 是不是 可以赋值 给一个 class( 实例对象是不是 class 或者 subClass 的实现 ),表示的类和对象之间的关系 ...
- cpu怎么实现运算的
这么好玩的问题,没人回答说不过去.不懂电子元件的码农我要强答一发了.太学术的我不会,你们也听不懂.所以臭不要脸非常不严谨地科普一记.说错不许打我.另外关于这个问题,推荐<编码 (豆瓣)> ...
- Digispark红外接收器
一.红外协议之NEC协议原理 NEC协议格式: 首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是 ...
- Video Timing Controller v6.1软件调试记录
Video Timing Controller v6.1软件调试记录 GUI配置: . case XVTC_VMODE_PAL: //576i@50 { TimingPtr->Interlace ...
- GTP+SDI工程播出部分思路整理(3)
GTP+SDI工程播出部分思路整理(3) 1.本文的目的主要分析video_out_to_sdi模块中输入信号 tx_usrclk, rst, tx_mode, tx_level_b的使用 Tx_us ...
- PHP代码实现3 [函数角度]
内部函数 标准函数的实现存放在ext/standard扩展目录中. php函数种类 Zend engine中的function的存在形式 123456 struct _zend_execute_dat ...
- Vue--基本语法
Vue语法学习 引入:script的src中导入vue包 创建:在script中创建vue对象 双向绑定: el----选择器,锁定标签 data----定义变量,将标签内容绑定给变量 {{变量}}- ...
- 数据仓库专题(5)-如何构建主题域模型原则之站在巨人的肩上(二)NCR FS-LDM主题域模型划分
一.前言 分布式数据仓库模型的架构设计,受分布式技术的影响,很多有自己特色的地方,但是在概念模型和逻辑模型设计方面,还是有很多可以从传统数据仓库模型进行借鉴的地方.NCR FS-LDM数据模型是金融行 ...
- 【Java安装】配置环境变量
添加环境变量: JAVA_HOME D:\Program Files\Java\jdk1.8.0_131 classpath: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\to ...