POJ-2486-树背包

poj2486——apple tree 题目大意:一颗树n个结点,n-1条边,每个结点有不同个数的苹果,在只能走k步(即经过k条边)的前提下,问从结点1出发最多能吃到多少苹果 输入:n k(1            结点i的苹果个数(n个数,之间有空格)            结点i 结点j(表示ij之间有一条边)(有n-1行) 输出:吃到的最多苹果个数 分析: 代码:转载自 阅读详情

一直想把他当树dp做 。。 怎么也想不出来转移方程 。。 后来灵机一动 。。 很像背包啊 。。 于是今天到机房就把他敲了 。。好久好久好久没做背包了 。。虽然某种说法上背包也是dp 。。

const int K = 209;
const int N = 109;

int dp[2][N][K];//0表示不回来;1表示回来
int val[N];
int vis[N];
int n, k;
vector<int>v[N];

void dfs(int u)
{
    //cout<<u<<endl;
    for(int i=0; i<=k; i++)
        dp[0][u][i] = dp[1][u][i] = val[u];
    vis[u] = 1;
    for(int i=0; i<v[u].size(); i++)
    {
    //cout<<"  +++ "<<endl;
        int uu = v[u][i];
        if(vis[uu]) continue;
        dfs(uu);
        for(int j=k; j>=0; j--)
            for(int jj=0; jj<=j; jj++)
            {
                dp[0][u][j+2] = max( dp[0][u][j+2], dp[1][uu][jj] + dp[0][u][j-jj] );
                dp[0][u][j+1] = max( dp[0][u][j+1], dp[0][uu][jj] + dp[1][u][j-jj] );
                dp[1][u][j+2] = max( dp[1][u][j+2], dp[1][uu][jj] + dp[1][u][j-jj] );
            }
    }
}

int main()
{
    while(~scanf("%d%d", &n, &k))
    {
        for(int i=1; i<=n; i++) scanf("%d", &val[i]);
        for(int i=1; i<=n; i++) v[i].clear();
        memset(dp, 0, sizeof(dp));
        memset(vis, 0, sizeof(vis));
        for(int i=1; i<n; i++)
        {
            int x, y;
            scanf("%d%d", &x, &y);
            v[x].push_back(y);
            v[y].push_back(x);
        }
        dfs(1);
        printf("%d\n", dp[0][1][k]);
    }
	return 0;
}



OpenCV学习笔记(25)基于MFC和OpenCV的摄像机定标与立体匹配测试程序(20140505更新) 最近整理了一下这两年一直在用的摄像机定标与立体匹配测试程序,将代码进行了重构,界面也做了调整,分享出来方便有需要的朋友使用。当然我的编程能力有限,程序可能还有各种bug,请大家多多包涵。相关问题欢迎留言或email联系讨论,谢谢! ==================================================================================源码 阅读详情

相关推荐

Visual Studio 6.0 镜像下载全指南:从企业版到中文版

本文提供Visual Studio 6.0企业版和中文版的镜像下载全指南,包括详细版本解析、已验证的下载链接及校验信息。针对现代系统的安装技巧和兼容性处理方案,帮助开发者高效获取并运行这一经典开发工具,特别适合维护遗留系统的专业人员。

weixin_33712987的博客 997

POJ-2486 Apple Tree (树形DP)

题目大意:一棵点带权有根树,根节点为1。从根节点出发,走k步,求能收集的最大权值和。 题目分析:从一个点向其某棵子树出发有三种可能的情况: 1、停留在那棵子树上; 2、再回到这个点; 3、经过这个点走向了其他分支; 定义状态dp(u,k,0/1)表示在u节点为根的子树上走k步并且不回/回到u的最大权值和。则状态转移方程为: dp(u,k,0)=max(dp(son,j-2,1...

weixin_30659829的博客 151

AUTOSAR进阶图解==>AUTOSAR_SWS_COM

AUTOSAR COM模块是AUTOSAR通信堆栈的核心组件,提供信号导向的通信服务。该模块位于通信服务层,连接RTE与PDU Router,主要功能包括信号封装/提取、传输模式管理、信号路由、超时监控和字节序转换等。COM模块架构分为应用层、通信服务层和通信抽象层,包含信号管理、I-PDU处理、传输模式管理等组件。其配置结构包括顶层容器、I-PDU组、I-PDU和信号等多层次配置对象,支持丰富的参数设置。模块采用严格的状态管理机制,包括模块状态和I-PDU组状态转换,确保通信可靠性。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1243

poj2486---Apple Tree(树状DP+背包)

https://vjudge.net/problem/POJ-2486 题意:一颗树,n个点(1-n),n-1条边,每个点上有一个权值,求从1出发,走V步,最多能遍历到的权值。 思路:考虑到能从父节点走到某一个子节点后,在走回至父节点,再取走其他的子节点(所以这个地方有3种情况).另开一维数组表示是否回到该结点。 dp[i][j][state]表示以i为父节点最多走j步,state表示状态,...

qq_38924883的博客 258

Vue3 - 超详细“纯前端“将文件上传到阿里云OSS对象存储,最新阿里云前端直传音频、视频、图片、文件、office文档等任意文件,vue3单个或批量从本地选择文件,秒传到阿里云oss无需后端接口!

vue3,阿里云oss存储,前端直传oss,上传图片/office文档/音视频/zip压缩包到阿里云oss,项目中上传文件到阿里云oss详细教程,如何将本地文件上传到阿里云OSS存储,纯前端实现阿里云OSS上传,纯前端直传至阿里OSS对象存储教程,如何解决上传文件到阿里云OSS本地环境调试出现跨域问题,直传阿里云oss跨域报错解决,前端直接上传文件到oss服务端,不经过后端直传,浏览器直接上传文件,阿里云oss上传sdk官方文档,阿里云错误,解决这个问题,上传很慢,一直签名失败,权限,不经过后端,纯前端直传

🏆 前端领域优质创作者 1万+

GB 47955—2026 L2组合驾驶辅助强制国标全解、合规方案与工程代码落地

GB 47955—2026 L2辅助驾驶国标合规工程代码# 运行环境:Python3.8+,适配车载仿真、台架测试、算法验证场景# 依赖安装:pip install numpy dataclasses tqdm struct time json# ===================== 国标强制时序参数(完全对标GB 47955—2026) =====================HAND_OFF_FIRST_WARN = 5.0 # 手部脱离5s触发一级预警。

lin_xiu的博客 297

POJ2486【树形DP】

题意:给出一棵树,然后从1开始走,问你走k步所能遍历到的最大权值和.思路:我们要求从1这个节点走K步所获得的最大值,所以dp就很容易想到>>>>>dp[node][k]: 代表从这个节点走k步的最大值。 但是在状态转移的时候,好像不能很清楚的从子节点通过某种关系到父节点。 所以套路:考虑从某个节点他最终回不回到本身。 那么转移就很容易了。 dp[i][j][0]代表从节点i走j步回到i的最大

ONE MORE TRY 536

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 2705

POJ 2486 树形DP+背包

题意一棵树,树上有N个点,能走K步。第二行有N个数字,代表着N个点上的苹果数。后面N-1行代表苹果树的联通情况。问最多能得到多少个苹果。题解又是一道树形DP的题目,不过这道题不太好搞。这道题涉及的情况还是比较复杂的,需要十分缜密的思维。首先我们可以把状态转移方程设置为dp[i][j][k],i代表当前点,j代表当前状态还可走的步数,k分两种状态,0代表回到当前点,1代表不回到当前点。 对于回到当前

zhenlingcn的博客 364

STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度

详细介绍了STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度。

kevin1499的博客 5588

ENS160传感器原理图设计,已量产(空气质量传感器)

ENS160 是一款集成式数字空气质量传感器,核心优势源于 “MEMS 传感元件 + 内置微处理器” 的架构。

不脱发的程序猿 569

POJ 2486 (树形背包 入门题)

题意:            一颗树,n个点(1-n),n-1条边,每个点上有一个权值,求从1出发,走k步,最多能遍历到的权值 思路: 1.我们想要回到根节点。          把这个过程分为两个部分:          step1:从根节点x到达son,从son遍历son的子树再回到son,从son回到son的根节点x;          step2:用剩余的步数遍历根节点x其余的子树...

兜率工的博客 1097

第03章 Hermes Agent 核心原理

环境跑通之后,读者会很自然地想问:Hermes 的内部到底是怎么转起来的?为什么它能做到"越用越聪明"?长对话不会忘记上下文吗?这一章用尽量短的篇幅把核心原理讲清楚。理解原理不是为了纸上谈兵,而是为了在第7章实战时能判断"为什么 Hermes 这么响应"以及"我应该把哪类任务交给它"。

亢少军的博客 141

树形DP——POJ1947 and POJ2486

本文针对POJ上的2057、1947、2486、3140四道题目,谈一下个人对树形DP的理解,上面4题无法覆盖树形DP的所有形式,但也有一定的针对性,值得去做一做,思考一下: 树形DP中常常用到“背包思想”,1947和2486就是利用了“背包思想”,状态想好了,最后就是在填“背包”,某个节点的“背包”是用他们的子树的状态进行填充的。 POJ1947:状态dp[i][p]表示以节点i为根

whosemario的专栏 1793

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

POJ 2486 Apple Tree

POJ 2486 Apple Tree 这也是道树形的背包,很恶心。以至于我都不想解释了。。。都在程序里。 //By YY_More #include<cstdio> #include<cstring> struct edge{ ...

aimifeng9177的博客 161

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

POJ-2486-Apple Tree-树形dp-01背包思想

POJ-2486-Apple Tree-树形dp-背包思想 POJ-2486-Apple Tree-树形dp-背包思想 Description Input Output Examples Input Output Problem Description Solution Code Description Wshxzt is a lovely girl. She l...

Simon的博客,已转移至 https://www.cnblogs.com/--Simon/ 517

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

每日一题 POJ 2486 树形dp 树上背包

POJ 2486 树形dp 树上背包 代码并不难写,关键是要想清楚。树形dp的第一个比较完整写完的题,是比较经典的题,来纪念一下。 一开始没想清楚是因为对背包问题的滚动数组优化的理解不够,自然在树上的问题也没思考清楚。 同时因为每个case过后忘记清零,导致re了一发,以后需要注意。 //AC代码 耗时188MS #include <iostream> #include<cstring> #define MAXN 205 using namespace std; struct EDG

GreyKa的博客 251

poj 2486 Apple Tree (树形背包dp)

题意 给一个n个节点的树,节点编号为1~n, 根节点为1, 每个节点有一个权值。 从根节点出发,走不超过k步,问最多可以获取多少权值? 思路 因为和uva-1407 caves有点相似,所以没想很久就AC了,但因为初始化问题WA了两次 f(i, j, 0): 表示子树i,走j次,最终不用回到i点获取的最大总权值 f(i, j, 1): 表示子树i,走j次,最终一定要回到i点获取的最大总权值 f(i, j, 1) = min{ min{ f(i, j-k, 1)

D_Double's Journey 2374

POJ-2486 Apple Tree (树上背包 经典题)

树上背包一道经典的入门题。题意一棵树,100个节点,每个节点上有一个或零个苹果,从1号节点出发,一共走K步,问最多可以吃多少个苹果。

hmc0411的博客 1383

[树上背包] POJ2486 Apple Tree

Apple Tree题意:一棵树n(<=100)个节点,每个节点有a[i]个苹果,从1出发走k(<=200)步,问最多能得到多少个苹果。思路:首先想到每个节点只有3种情况,要么不经过,要么经过了最后回来,要么经过了最后不回来,只用关心后两种就行。 于是可以想到一个dp[i][j][k],表示从i出发走j步,k=0表示回来,k=1表示不回来,现在想怎么转移。 转移的关键是每个子节点走多少步,暴力枚

穹妹的家 1325

POJ 2486

POJ 2486 对于一个弱菜来说,期末考试是鬼门关,经过一个月的预习,终于完成了大学生涯第一次不挂科的经历,也要回到ACM中被虐的征途了。 题意:给出一颗N个节点的树,根节点为1,然后给出每个节点苹果的数目,问在走K步之内最多能吃掉多少苹果,可以走回头路,回头路这个太恶心了,断断续续想了几个星期,今天试着交一次,居然一次AC了,惊喜。 思路: 状态DP[ I ][ J ][ K ],代表

rssj_chlh的专栏 792

POJ_2486_AppleTree(树状DP&&01背包)

Apple Tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9584   Accepted: 3192 Description Wshxzt is a lovely girl. She likes apple very much. One day HX t

OTTFF的博客 947

poj 2486

题目大意: 一个人喜欢吃苹果,一个树上的结点都放这苹果,但是这个人最多只能走m步,问走m步可以吃的苹果最多是多少? 解题思路: 这道题目和普通的树形背包有点区别,访问每个结点是按步数算的,这样,访问了子孙结点还可能返回来,也有可能不回来,我们可以多增加一维来处理这样的情况; dp[i][j][1]表示从i出发最后停留在i的直接相连的子孙或者i; dp[i][j][0]表示从i出发既没有停

微不足道 546

poj 2486 Apple Tree (树形背包dp)

  本文出自   http://blog.youkuaiyun.com/shuangde800   题目链接: poj-2486   题意    给一个n个节点的树,节点编号为1~n, 根节点为1, 每个节点有一个权值。    从根节点出发,走不超过k步,问最多可以获取多少权值? 思路    因为和uva-1407 caves...

weixin_34260991的博客 72

POJ 2486 Apple Tree 树形DP+分组背包

分组背包思想与树形DP的结合,极为机智的动态规划。

看曙光 1780

【树形DP】POJ 2486 Apple Tree

通道:http://poj.org/problem?id=2486 题意:点权树,求从1出发,走V步,最多能遍历到的点权和 思路: 我们把背包的思想用到这里来,做的步数相当于背包的容量,点上的权值相当于价值,给定一定的背包容量,求最多能装进背包的 价值 设dp[0][s][j]表示从s(当前根节点)出发,走 j 步,回到s所能获得的最大权值 ...

140
上一篇: POJ-4045-数据结构+dfs
下一篇: POJ-1442-treap
walk_up
博客等级 码龄15年 2粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值