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 ...
随机推荐
- ElasticSearch(三)不仅仅是查询
二次评分 查询出来结果后,进行二次评分: 但是其实每个文档查询出来的结果是两次查询的分数之和,这个其实并不是很能讲的清楚: 多匹配控制 多匹配是指multi-match,控制则是指一下的几种控制方式: ...
- mac 蓝牙开启调试模式
mac 蓝牙开启调试模式 按住shift+option+鼠标右键点右上角的蓝牙图标
- 线程【五】VCL下的线程类
在这里把网友常常搞不清楚的属性作用列出来: 一.FreeOnTerminate用于表明线程执行完毕后是自动释放还是保留,默认为False 二.Terminate 该过程只是简单地设置线程类的Termi ...
- Android app内存限制OOM
Android系统的每个app做了内存限制,版本的android系统,不同的设备对每个app的内存限制可能有所不同,从早期的16M ,32M到现在的256M,384M...虽然内存增大了,但是不代表就 ...
- 原来 php 中的 json_encode() 只支持utf-8.不支持gbk啊
原文地址:在gbk/gb2312编码中如何使用json_encode/json_decode
- LeetCode——11. Container With Most Water
一.题目链接:https://leetcode.com/problems/container-with-most-water/ 二.题目大意: 给定n个非负整数a1,a2....an:其中每一个整数对 ...
- Gerrit安装
1.安装gerrit [sisi@pre-srv44 ~]$ su - gerrit2Password: [gerrit2@pre-srv44 ~]$ lltotal 83872-rw-r--r-- ...
- MySQL 服务启动y异常: 本地无法启动MySQL服务,报的错误:1067,进程意外终止---解决
启动MySQL后,几秒钟后直接报错了 然后在事件查看器中发现了几条错误信息 Can't start server: Bind on TCP/IP port: No such file or direc ...
- java设计模式-工厂系列
一.简单工厂 1.背景: 任意定制交通工具的类型和生产过程 代码: Moveable.java package com.cy.dp.factory; public interface Moveable ...
- IDC:IDC(互联网数据中心)
ylbtech-IDC:IDC(互联网数据中心) IDC为互联网内容提供商(ICP).企业.媒体和各类网站提供大规模.高质量.安全可靠的专业化服务器托管.空间租用.网络批发带宽以及ASP.EC等业务. ...