标签:贪心,dfs

Description

题目简述:树版[k取方格数]

众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏。

今天他得到了一款新游戏《XX半岛》,这款游戏有n个场景(scene),某些场景可以通过不同的选择支到达其他场景。所有场景和选择支构成树状结构:开始游戏时在根节点(共通线),叶子节点为结局。每个场景有一个价值,现在桂马开启攻略之神模式,同时攻略k次该游戏,问他观赏到的场景的价值和最大是多少(同一场景观看多次是不能重复得到价值的)

“为什么你还没玩就知道每个场景的价值呢?”

“我已经看到结局了。”

Input

第一行两个正整数n,k

第二行n个正整数,表示每个场景的价值

以下n-1行,每行2个整数a,b,表示a场景有个选择支通向b场景(即a是b的父亲)

保证场景1为根节点

Output

输出一个整数表示答案

Sample Input

5 2

4 3 2 1 1

1 2

1 5

2 3

2 4

Sample Output

10

HINT

对于100%的数据,n<=200000,1<=场景价值<=2^31-1

Source

dfs序+线段树

分析:这题是钟长者出的模拟题,但因为不明原因搞上了bzoj

很多人都是线段树+dfs序的做法

实际上并不需要

可以先dfs一遍,处理出w[x]表示以x为根节点的子树中取一条价值和最大的链

每次选择x中w[son]最大的一个转移:w[x]=max(w[son])+a[x]

然后将w排序,转化为c数组,取前k大

Code

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#define rep(i,a,b) for(register int i=a;i<=b;i++)
#define dep(i,a,b) for(register int i=a;i>=b;i--)
#define mem(x,num) memset(x,num,sizeof x)
#define v e[i].to
#define ll long long
#ifdef WIN32
#define LL "%I64d"
#else
#define LL "%lld"
#endif
using namespace std;
inline ll read()
{ll f=1,x=0;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
const  ll maxn=2e5+6;
ll head[maxn],a[maxn],n,k,w[maxn],cnt=0,c[maxn],tot=0;
struct edge{ll to,next;}e[maxn<<1];
#define v e[i].to
#define reg(x) for(int i=head[x];i;i=e[i].next)
inline bool cmp(ll x,ll y){return x>y;}
void dfs(int x,int fa)
{ll Max=0,mx;reg(x){if(v==fa)continue;dfs(v,x);if(w[v]>Max)Max=w[v],mx=v;}w[x]=Max+a[x];reg(x){if(v==fa||v==mx)continue;c[++tot]=w[v];}
}int main()
{n=read(),k=read();rep(i,1,n)a[i]=read();rep(i,1,n-1){int U=read(),V=read();e[++cnt]=(edge){V,head[U]};head[U]=cnt;e[++cnt]=(edge){U,head[V]};head[V]=cnt;}tot=0;dfs(1,1);c[++tot]=w[1];sort(c+1,c+1+tot,cmp);ll ans=0;k=min(k,tot);rep(i,1,k)ans+=c[i];cout<<ans<<endl;return 0;
}

BZOJ3252 攻略相关推荐

  1. BZOJ3252: 攻略

    BZOJ3252: 攻略 Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏. 今天他得到了一款新游戏<XX半岛> ...

  2. bzoj3252 攻略

    http://www.elijahqi.win/2018/03/15/bzoj3252/ ‎ Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他 ...

  3. bzoj3252攻略(线段树+dfs序)或者(树链剖分+dfs)

    3252: 攻略 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1341 Solved: 642 [Submit][Status][Discuss] ...

  4. BZOJ3252攻略——长链剖分+贪心

    题目描述 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏.今天他得到了一款新游戏<XX 半岛>,这款游戏有n个场景(scene),某 ...

  5. [bzoj3252]攻略

    题目描述 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏. 今天他得到了一款新游戏<XX半岛>,这款游戏有n个场景(scene),某些场景可以通过不同的选择支到达 ...

  6. bzoj3252 攻略 dfs序+线段树

    题目传送门 题目大意:给出一棵树,1为根节点,每个节点都有权值,每个叶子节点都是一个游戏的结局,选择k个游戏结局,使得权值总和最大,同一个节点不会被重复计算. 思路:这道题最关键的是要想到一个性质,就 ...

  7. bzoj3252攻略 贪心+dfs序+线段树

    题目链接:戳这里 3252: 攻略 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 605  Solved: 255 [Submit][Status] ...

  8. bzoj3252攻略(线段树+dfs序)

    3252: 攻略 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 562  Solved: 238 [Submit][Status][Discuss] ...

  9. dfs序+线段树 BZOJ3252 攻略

    3252: 攻略 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 496  Solved: 211 [Submit][Status][Discuss] ...

最新文章

  1. memcached在windows下的基本使用方法
  2. centos 配置redis
  3. 面试总结-百度(2)
  4. 云计算基础设施智能运维的下一段征程,你们准备好了吗?
  5. 动人配乐是如何炼成的?带您了解《花之灵》背景原声的幕后制作秘辛
  6. sx1268 中文_STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)
  7. 关于mysql ERROR 1045 (28000)错误的解决办法
  8. querywrapper 时间区间查询_雅思官方:关于增设用于英国签证及移民的雅思考试考点的通知!附20192020雅思考试时间安排...
  9. 附录:更多集合操作命令
  10. 从零开始构建自己的爬虫代理IP数据库并定期检验IP有效性...
  11. 数据增长率怎么算_2019 年“泰迪杯”数据分析职业技能大赛A题 超市销售数据分析...
  12. Rbf神经网络使用Tensorflow实现
  13. 批处理bat中@echo on/off是什么意思?
  14. 展锐Android-Q LCD调试
  15. [CSP-S模拟测试]:赤壁情(DP)
  16. 「免费 | 重磅」9月19日首届智能决策论坛即将开幕!(附带10+位作者演讲主题及摘要)「中国科学院自动化研究所」...
  17. wps和office哪个好用 wps和office兼容吗
  18. 人脸识别登录:加强系统认证
  19. Oracle LiveLabs实验:Manage and Monitor Autonomous Database
  20. Fragment的基本用法

热门文章

  1. 百度新闻源“漏洞”爆粉!日流水十几万的微商都在偷偷用
  2. 微信登录,qq登录,微博登录之 tp3.2
  3. LabVIEW测试面板丢失,修复或重置NI MAX
  4. java poi 导出excel模版
  5. Sentry安装并集成到Django Web项目
  6. Android使用Google定位服务定位并将经纬度转换为详细地址信息(国省市县街道)
  7. VIVADO无法生成比特流
  8. Nature Medicine:利用静息态fMRI功能连接定义抑郁症神经生物学亚型
  9. uglifyjs php,使用UglifyJS合并/压缩JavaScript
  10. uefi启动linux过程_Linux UEFI与备份还原(引导修复)