1486 愚蠢的矿工

 时间限制: 1 s
 空间限制: 128000 KB
 

题目描述  Description

Stupid 家族得知在HYC家的后花园里的中央花坛处,向北走3步,向西走3步,再向北走3步,向东走3步,再向北走6步,向东走3步,向南走12步,再向西走2步( - -||)就能找到宝藏的入口,而且宝藏都是藏在山里的,必须挖出来,于是Stupid家族派狗狗带领矿工队去挖宝藏.(HYC家的宝藏被狗狗挖走后有什么感想?)

这个宝藏的制造者为了掩盖世人耳目,他做的宝藏是没有出口,只有入口,不少建造宝藏的人都死在里面.现在知道宝藏总共有N个分岔口,在分岔口处是有财宝的,每个宝藏点都有一个财富值.狗狗只带了M个人来,而且为了安全起见,在每个分岔口,必须至少留一个人下来,这个留下来的人可以挖宝藏(每个人只能挖一个地方的宝藏),这样才能保证不会迷路,而且这个迷宫有个特点,任意两点间有且只有一条路可通.狗狗为了让他的00开心,决定要尽可能地多挖些宝藏回去.现在狗狗的圈叉电脑不在身旁,只能求救于你了,你要知道,狗狗的终身幸福就在你手上了..(狗狗ps:00,你不能就这样抛弃偶……)

数据范围

对于10%的数据,n<10

对于100%的数据,n<=1000

输入描述  Input Description

第1行:两个正整数N,M .N表示宝藏点的个数,M表示狗狗带去的人数(那是一条懒狗,他自己可不做事)。(m<=100)

第2行:N个整数,第i个整数表示第i个宝藏的财富值.(保证|wi|<maxint)

第N+2行:两个非负整数A和B,表示A通向B,当A=0,表示A是入口.(保证A,B<=n)

输出描述  Output Description

输出狗狗能带回去的宝藏的价值。

样例输入  Sample Input

4 3

5 6 2 4

1 2

0 1

2 3

3 4

样例输出  Sample Output

13

/*
树形DP f[i][j]表示当前节点为i,还剩j个人能获得的最大价值。
多叉树转二叉树,左儿子右兄弟
所以不能只选左孩子,但可以不选当前节点,只选右孩子
转化好了之后就是DP了。
写的记忆化 递归每个节点 枚举分给左右孩子的人数
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1010using namespace std;
int n,m,ans,x,y;
int f[maxn][maxn],a[maxn],son[maxn][3];int DP(int root,int cnt)
{int maxx=0;if(f[root][cnt])return f[root][cnt];//记忆化 if(root==0||cnt==0)return 0;//剪枝 f[root][cnt]=a[root];//选择当前节点 for(int i=1;i<=cnt;i++){if(DP(son[root][1],i-1)+a[root]+DP(son[root][2],cnt-i)>maxx)maxx=DP(son[root][1],i-1)+a[root]+DP(son[root][2],cnt-i);//左孩子分配i个人,并且选择这个节点。 if(DP(son[root][2],i)>maxx)maxx=DP(son[root][2],cnt);//不选当前节点,只选右孩子(他的兄弟节点).
    }if(f[root][cnt]<maxx) f[root][cnt]=maxx;return f[root][cnt];
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++)//多叉转二叉
    {scanf("%d%d",&x,&y);if(son[x][1]==0)son[x][1]=y;//1是左孩子,2是右孩子 else{int fa=son[x][1];while(son[fa][2])fa=son[fa][2];son[fa][2]=y;}}ans=DP(son[0][1],m);printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/L-Memory/p/6361246.html

codevs1486愚蠢的矿工(树形dp)相关推荐

  1. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  2. [树形dp] Jzoj P5233 概率博弈

    Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...

  3. fwt优化+树形DP HDU 5909

    1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...

  4. BZOJ 1040 ZJOI2008 骑士 树形DP

    题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...

  5. POJ 3342 树形DP+Hash

    这是很久很久以前做的一道题,可惜当时WA了一页以后放弃了. 今天我又重新捡了起来.(哈哈1A了) 题意: 没有上司的舞会+判重 思路: hash一下+树形DP 题目中给的人名hash到数字,再进行运算 ...

  6. [NC15748]旅游 树形dp基础

    菜鸡第一次接触树形dp这个东西,不过这个东西还是很好理解的(可能是因为模板题吧) 个人感觉,相比线性dp,树形dp的状态转移方程更加的直观,难点主要是在"树"的结构上比较麻烦. 题 ...

  7. 容斥 + 树形dp ---- 2021 icpc 沈阳 L Perfect Matchings

    题目链接 题目大意: 就是给你一个2n2n2n个点的完全图,从这个图里面抽出2n−12n-12n−1条边,这些边形成一颗树,现在问你剩下的图里面点进行完美匹配有多少种方案? 解题思路: 一开始被完美匹 ...

  8. 树形dp ---- gym101667 A(贪心 + 树形dp + 两个dp方程组维护)

    题目链接 题目大意: 就是一棵5e35e35e3的树,可以选择一些点,放上基站,如果uuu上的基站价值为ddd,那么距离uuu小于等于ddd的点都会被覆盖,问使得整棵树被覆盖需要的最小价值. 解题思路 ...

  9. 树形dp ---- 2018年杭电多校第二场 H travel

    题目大意: 就是给你一个带点权的树,找到3条独立互不相交的路径使得权值和最大 解题思路: 很经典的树形dp 我们设dp[root][j][k]dp[root][j][k]dp[root][j][k]表 ...

  10. 2019 GDCPC or HDU6540 树形dp[计数dp] 详解

    题目链接 题目大意: 就是给你一颗nnn个点的树,树上有mmm个关键点,你可以选择若干个关键点组成集合SSS,这个集合满足任意两点在树上的距离不超过kkk,问你有多少种选法? 解题思路: 我们考虑树形 ...

最新文章

  1. 在Spring Boot中实现通用Auth认证的几种方式
  2. Ajax--readyState一直为0
  3. 160. Intersection of Two Linked Lists
  4. 2017/9/26Codeforces E题
  5. python sort、sorted 高级用法
  6. jQuery全屏滚动插件fullPage.js
  7. SOFA 源码分析 —— 服务发布过程
  8. ios kvo 要引入_iOS中KVO的使用
  9. Android开机启动Activity或者Service方法
  10. 需求分析解决方案文案,展示图文结合的文案的视觉感。运用屏幕摄影师Snaglt实现屏幕图像文本捕获与编辑,为技术文案的编写提供素材支持。
  11. Origin 2019b 64Bit 软件绘制出图的坐标刻度老是消失怎么解决
  12. 计算机用户密码最长使用期限,电脑Win10系统强制用户定期更新密码的方法
  13. laravel 利用auth完成前台和后台的登录模块
  14. 利用ckplayer浏览器在线播放视频并获取视频预览图方法
  15. Python量化交易平台:JQData | API使用文档(转)
  16. html svg文件怎么打开,SVG 在 HTML 页面
  17. 美国电子计算机大学排名,美国大学电子计算机专业排名院校有哪些?
  18. c#安卓连接sqlserver_C#手把手教你玩微信自动化
  19. Resource体系
  20. java中string长度有限制吗,最大是多少?

热门文章

  1. 人智导(十八):知识表示与自动推理(Ⅰ)
  2. IoTFlashTool下载烧录不了,可能是因为串口波特率的问题
  3. 举个栗子!Tableau 技巧(201):在 Prep 中调用 Python 处理复杂数据
  4. 特征工程|空间特征构造以及文本特征构造
  5. 小白科普:服务那点事儿
  6. Matlab交互式画图-示例
  7. springboot项目:Redis分布式锁的使用(模拟秒杀系统)
  8. 什么性格的人适合计算机专业?高考志愿填报选专业
  9. 『树莓派云台机器人』01. 使用手机控制树莓派云台机器人
  10. 深圳大学和杭电计算机专业哪个实力强,投档分排名前100高校,深圳大学等17所四非高校,凭啥备受青睐?...