[codevs1418]愚蠢的矿工

ubuntu 下code blocks 安装全过程 && codeblocks 快捷键 && 解决调试终端不能粘贴问题 ubuntu 下code blocks 安装全过程  && codeblocks 快捷键 && 解决调试终端不能粘贴问题 (一)安装步骤: 1.先把编译环境,C库、C++库和Boost库装好,如下: sudo apt-get install build-essential * 有可能安装 build-essential 后gdb就已经安装过了    sudo apt- 阅读详情

题目←

之前听过思路,胡搞了一下……
左儿子右兄弟写起来简单些(枚举次数并不少)

转移:
dp[i][j]为到第i个点剩j人的最大可获价值
节点上留人则可由左儿子和右兄弟的和+自己转来;
节点上不留人只能由右兄弟转来

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAXN = 200000 + 50;
int head[MAXN],next[MAXN << 1],tot;
struct edge
{
    int f,t;
}l[MAXN << 1];
int w[MAXN],a,b,L[MAXN],R[MAXN];
void init(int n)
{
    for(int i = 0;i <= n;i ++)
        head[i] = -1,R[i] = -1,L[i] = -1;
}
int n,m;
void build(int f,int t)
{
    l[++ tot] = (edge){f,t};
    next[tot] = head[f];
    head[f] = tot;
}

void solve(int u)
{
    if(head[u] == -1)return;
    int i = head[u];
    int p = l[i].t;
    L[u] = p;
    solve(p);
    for(i = next[i];i != -1;i = next[i])
    {
        R[p] = l[i].t;
        p = R[p];
        solve(p);
    }
}
int dp[1005][1005];
int dfs(int u,int sy)
{
    if(u == -1)return 0;
    if(!sy)return dp[u][sy] = 0;
    if(dp[u][sy])return dp[u][sy];
    int ans1 = 0,ans2 = 0;
    for(int i = 0;i <= sy - 1;i ++)
    {
        ans1 = max(ans1,dfs(L[u],i) + dfs(R[u],sy - 1 - i));
    }
    ans1 += w[u];
    for(int i = 0;i <= sy;i ++)
    {
        ans2 = max(ans2,dfs(R[u],sy - i));
    }
    return dp[u][sy] = max(ans1,ans2);
}
int main()
{
    scanf("%d%d",&n,&m);
    init(n);
    for(int i = 1;i <= n;i ++)
    {
        scanf("%d",&w[i]);
    }
    for(int i = 1;i <= n;i ++)
    {
        scanf("%d%d",&a,&b);
        build(a,b);
    }
    solve(0);
    printf("%d",dfs(L[0],m));
    return 0;
}
隔壁小陈个人博客 Hexo快搭. 立即下载

相关推荐

CodeSmith破解工具

CodeSmith破解工具 、带破解文档 安装文件,亲自测测试可用

愚蠢的矿工--树形动态规划

http://www.rqnoj.cn/Problem_30.html 一、思路 题目是多叉树,原本想 0                       0 0 3  =0 1 2 =0  2 1 = 0 3 1 但是要列举的情况太多,就采用转换为二叉树的方法 1 2 3 1、读进多叉树tree[1001][1001] tree[i][0]来记录本节点的孩子个数 tree[i][j

legan的专栏 992

随机森林文本分类

随机森林原理及代码实现 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录随机森林原理及代码实现前言一、集成算法是什么?二、随机森林是什么三、 数据预处理3.1 先来看一下我们的文本数据3.2 预处理3.3 统计评论情感值积极与消极的占比二、使用步骤参数介绍(4个)属性1.引入库2.参数调参方法总结 前言 提示:这里可以添加本文要记录的大概内容: 例如

m0_46579176的博客 5809

codevs愚蠢的矿工(树形DP)

/* 树形DP 根节点一定有人 然后 剩下的人没到每个孩子去 因为孩子数可能很多 不好枚举 所以转二叉树 分两部分 O(sum)就可以了 当然 转二叉树候必须顾及原来树的一些性质 如不能只选左孩子 转化好了之后就是DP了 写的记忆化 递归每个节点 枚举分给左右孩子的人数 */ #include<iostream> #include<cstdio>...

weixin_30838921的博客 105

f_fs.c 初始化流程(进行中)

前言 之所以选择f_fs.c作为这系列的开始,因为usb在/driver/usb下面的内容实在太多太多,如果讲各种各样点会太分散了。所以决定切入点以实际使用为主,就是f_fs了,目前我了解这是做bulk裸传输使用的,具体的通信协议自己确定。 初始化部分 开始点从这个路径下说起, /drivers/usb/gadget/function/f_fs.c 然后f_fs.c第一个使用的是include/composite.h中的宏定义function #define DECLARE_USB_FUNCTION(_n

weixin_36406973的博客 1967

A股历史数据免费下载终极指南:4000+个股数据一键打包获取

本文提供了获取A股历史数据的完整免费方案,重点介绍了Tushare Pro、AkShare等开源金融数据API的使用方法。通过详细的Python脚本示例,指导读者如何自动化批量抓取、清洗、存储4000多只个股的历史行情数据,并分享数据质量校验与性能优化技巧,助力量化研究与市场分析。

ooo22的博客 2236

[题解] codevs 1486 愚蠢的矿工

http://codevs.cn/problem/1486/ 我们比较熟悉二叉树,题目中给出的是一棵多叉树,我们需要将这可二叉树改造成二叉树。 二叉树可以为这样的: 父亲结点左边储存儿子,右边储存兄弟。 有两种改造方法: ①if(tree[x].l==0)tree[x].l=y; else { int k=tree[x].l; while(tree[k]...

weixin_30517001的博客 162

别再手动转格式了!用Java+LibreOffice命令行实现Word批量转PDF(附Docker部署避坑指南)

本文详细介绍了如何利用Java和LibreOffice命令行实现企业级Word批量转PDF的自动化解决方案,包括多线程优化、Docker化部署及常见问题排查。通过代码示例和实战经验,帮助开发者高效处理文档转换需求,提升工作效率并避免常见陷阱。

552

【树形DP】愚蠢的矿工

【树形DP】愚蠢的矿工并没有什么用的更新时间愚蠢的矿工【题目描述】【输入格式】输出格式【样例输入】【样例输出】【代码】【相关链接】 并没有什么用的更新时间 【2019/03/05】 题目及代码更新 愚蠢的矿工 【题目描述】 Stupid 家族得知在HYC家的后花园里的中央花坛处,向北走3步,向西走3步,再向北走3步,向东走3步,再向北走6步,向东走3步,向南走12步,再向西走2步( - -||)...

qq_44618728的博客 530

H3C防火墙旁路部署实战:网关迁移到防火墙后,如何配置DHCP和VLAN间隔离策略?

本文详细介绍了H3C防火墙旁路部署实战,重点讲解网关迁移到防火墙后的DHCP配置和VLAN间隔离策略。通过实际案例和配置示例,帮助网络工程师解决传统核心交换机架构的性能瓶颈和安全管控问题,实现精细化访问控制。

weixin_42549451的博客 416

100天精通Python(可视化篇)——第80天:matplotlib绘制不同种类炫酷柱状图代码实战(簇状、堆积、横向、百分比、3D柱状图)

0. 专栏导读 1. 普通柱状图 2. 簇状柱形图 3. 堆积柱形图 4. 横向柱状图 5. 横向双向柱状图 6. 百分比堆积柱形图 7. 3D柱形图 8. 3D堆积柱形图 9. 3D百分比堆积柱形图

努力让自己发光,对的人才能迎着光而来 2万+

[题目总结][动态规划] 更新ing

待更新…… 动态规划是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。 以上摘自知乎。 就停课以来做的题来看,除了那些根本不会的,要注意的大概有 1、明确状态定义 2、考虑初始状况 3、注意端点状况 4、时间复杂度,时间复杂度,时间复杂度vijos1232核电站问题 也是洛谷的双塔问题 orz O(n^3)A掉此题的Frankcodevs

LOI_pingxing的博客 414

scp 出现Permission denied错误 解决方法

第一种说辞(来源于网络),说是scp涉及root远程登录,默认是没有打开的,只需要把配置文件中的permit打开即可。最后scp的时候发现还不行,只需要将其scp的服务器用户名 修改为root即可。第二种解决方案,将scp 传输的服务器用户名改为root即可。(这是最基本的,一开始我忽视了这个问题,导致一直scp不了)window系统下,向ubuntu操作系统 scp传输文件。

码农研究僧的博客 6729

rnqoj-30- [stupid]愚蠢的矿工-树形DP

把树转化为二叉树,然后再左右DP; #include #include #include #include using namespace std; struct list { int l; int r; }node[2001]; int val[2001]; int vis[2001][101]; int m,n; int dp(int x,int m) { if(

青竹梦 1873

PD3.0详解 电源规则,全解!!!全解!!!

电源规则 大师匈今天谈一下PD3.0的电源规则,PD3.0标准标定的规则。 USB协议声称,为了世界和平世界环境,让大家用上统一标准的充电器,不用再为每一个用电设备都配一个专门的充电器,这些充电器各种各样的都有,所以有时候大师匈也很烦!!!那么为了维护世界和平,USB协议呢就制订了这个PD快充协议,还有它的规则,只要全世界都用PD,就解决了这个大问题。 在这里先了解一个关键字,PDP: Power Delivery Power PD电源的功率。 每个PD充电产品的功率要以0.5W的精度上报,比如大师匈做的P

大师匈的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

code[vs]4189字典

题目链接                                                            4189 字典  时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题解 题目描述 Description 最经,skyzhong得到了一本好厉害的字典,这个字典里整整有n个单词(1&lt;=n&lt;=200000) ...

DaDaguai001的博客 284

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

HDU 3265 Posters

/* HDU 提交请用__int64 简单的矩形面积并,考虑把每一个中间有孔的矩形分解为四个小矩形求解即可 */ #include "cstdio" #include "algorithm" using namespace std; #define LL long long #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int

\*zyeric*/ 459

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

HDU 3265 - Posters

题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3265   方法 : 线段树 + 扫描线   昨晚做了哈,想用个高效的方法(每个“回”字只用两次),貌似想搓了,不得已重新回到暴力(每个“回”字分成4份)。   另外,因为利用的是点化区间的方法。RE了一次,原因是没判断 if(p[i].y2>p[i].y1) , 题目中两者是有可能相等的

诳人居 686

Codeforces1194C

https://codeforc.es/contest/1194/problem/C 从p中取出一些字符放入s中使s与t相等 s是t子序列 t-s剩余部分是p的子集 c[]计数 多组清0 #include<bits/stdc++.h> using namespace std; #define forn(i,n) for(int i=0;i<n;i++) #define rep(...

qq_40423146的博客 381

如何解决 code: 18446744073709550594的错误

如何解决 code: 18446744073709550594的错误  在WWDC 2015,苹果为iOS9和OS X 10.11发布新功能App Transport Security。 App Transport Security(ATS)让应用Info.plist文件中添加一个新的设置用来指定哪些域名是可以安全通信的。 如果你没有在In

zhanghaibo369的博客 4560

rnqoj-30- [stupid]愚蠢的矿工-树形DP

把树转化为二叉树,然后再左右DP; #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; struct list { int l; int r; }node[2001];...

weixin_30432179的博客 126

ubuntu 下 codeblocks 的使用 各种技巧

ubuntu下code blocks安装全过程&&codeblocks快捷键&&解决调试终端不能粘贴问题   (一)安装步骤:   1.先把编译环境,C库、C++库和Boost库装好,如下: [cpp] view plaincopyprint? sudo apt-get install build-essential   *

1372

ubuntu 16.04安装visual studio code环境

这个东西很多人推荐, 试用了下还不错, ubuntu可用 0. 使用文档 https://code.visualstudio.com/docs/?dv=linux64_deb 1. 下载 deb包 https://code.visualstudio.com/Download 2. 安装 sudo dpkg -i code_1.19.2-1515599945_am

大数据和机器学习研究 1万+
上一篇: [openjudge666]放苹果
下一篇: [codevs1099]字串变换 双向BFS
LOI_pingxing
博客等级 码龄10年 24粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值