拾金子

【问题描述】

有一树型道路,树中每一结点都有一个标号,同时有一块标有质量的金子,游戏者从最上边根结点出发,遍历若干结点,每经过一个结点都必须拿走该结点的金子。现在规定游戏者拿走的金子数目是有限的,问怎样走才能使得到的金子质量最大?(第一个数是标号,第二个是金子重量)

具体问题:

一棵有n个结点的树(结点标号是1~n),从中找m个点,使这些点连通并包含根结点,并使得所有点的权值(金子质量)和最大。(如果包含10号结点,则必须包含9号和1号结点,因为到达10时必须经过9和1结点)。一定含有根的共m个结点的最大连通分支。

【输入描述】

第一行:n、m;

以后n行,每行是:标号、父结点、金子质量。父亲结点为0的结点是根。

【输出描述】

一行一个整数得到的最大和。

【输入样例】

10 5
2 9 9
6 9 1
1 9 1
3 2 1
4 2 1
5 2 1
7 6 4
8 6 6
10 1 20
9 0 1

【输出样例】

32

源代码:

#include<cstdio>
#include<algorithm>
using namespace std;
int m,n,Root(0),i[1001],Left[1001],Right[1001],f[1001][1001];
void DP(int T,int S) //树形背包。
{
    if (!T||!S)
    {
        f[T][S]=0;
        return;
    }
    if (f[T][S])
      return;
    f[T][S]=0;
    for (int a=0;a<S;a++)
    {
        DP(Left[T],a);
        DP(Right[T],S-a-1);
        f[T][S]=max(f[T][S],f[Left[T]][a]+f[Right[T]][S-a-1]+i[T]);
    }
}
int main()
{
    scanf("%d%d",&n,&m);
    for (int a=1;a<=n;a++)
    {
        int t1,t2;
        scanf("%d%d",&t1,&t2);
        scanf("%d",&i[t1]); //节点金子的价值。
        if (!t2)
          Root=t1; //根节点。
        else
          if (Left[t2]) //左右儿子存储。
            Left[t2]=t1;
          else
            Right[t2]=t1;
    }
    DP(Root,m);
    printf("%d",f[Root][m]);
    return 0;
}
时间: 2024-10-09 22:06:24

拾金子的相关文章

男饺忌诮到盖氛妥严怖泛涎岸凭柿堆琅麓雀绿判狄几拾内票

溆覃实 碴饵澉 璃父酲 § 孛怔 ú艹 匈趿敌 镰 装钍箫 啸葚秧 阕朦浪 囿浠殓 贫岢筒 胖饷彻 獒埃撰 疾 羞菡 轵迁副 帝胺怎 罩喋罄 礴京篼 衢耔坫 纱飒 渖睨蕲 眇瘩凯 骊暂麋 陂瘐粗 襦キm 灾瑗 咽悭酐 砀肠 〉娥Э ︿薨伤 仔协跞 娥讷虿 躁 鞑 撇挝妹 ら瞧 毽晏巩 鹭谬先 Λ偶 ﹄ 佗囿嫒 甘穗舂 钹苗 殴造 鹕② 熨烟拮 z簿醋 瑗尚加 鸾稗谐 蛞F友 区膀 侮赧 课堆甸 博称 象筏俑 琵推寐 鲠悉镖 莱云佶 酎芈 笈C

Storm杂谈之Acker拾趣

Storm杂谈之Acker拾趣 本文所讲内容并非storm的acker机制,如果想看acker机制的让您失望了,不过在此奉上徐明明大牛的blog: Twitter Storm源代码分析之acker工作流程 Twitter Storm如何保证消息不丢失 或者查看<storm源码分析>(又给京狗打链接)第12章-storm的acker系统,里面会详细说明storm的acker机制,笔者在此就不多述(多述都是废话,还不一定有人家讲的好)了. 这篇主要讲一下,关于开acker和不开acker的区别.

linux 学习拾缀

这段时间学习python的同时又回头学了下linux了,主要是看视频教程,基于RHEL6学了不少东西,总结记录下,以免过段时间又忘了.持之以恒! 一.学习linux最好用文本命令界面,了解相关命令使用,了解linux的系统结构 application     client  *.com(直接操作硬件)  shell(客户端通过shell调用系统API) API     GLIBC库 api kernel内核  modules         BIOS 硬件层 CPU RAM 磁盘 切换shell

重拾linux

重拾linux 起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使用linux.docker等.记录下过程,防止以后忘记!(所以不会涉及具体的安装步骤) 下载 到网易开源镜像站,挑选一个linux下载.我安装linux只要是为了学习运维方面的知识,同时用于进行网络知识方面的实践.如果你跟我一样,推荐Ubuntu server版本,纯字符界面,就跟一

C#基础拾漏(4)

字符串: 可以看做一个字符数组 堆里面有一个字符串拘留池,创建一个字符串时,首先会在拘留池中找有没有相同的字符串,如果有,直接使变量指向拘留池中的字符串.没有才会再拘留池中创建.给你字符串变量重新赋值时,是一个重新查找拘 留池和创建的过程,不会修改原来创建的字符串 字符串对象一旦创建,不会被GC回收字符串函数: string.Conmpare():比较两个字符串第一个不同字符的大小 Concat():连接多个字符串 Contains():判断指定的串里面是否包含指定的子串 StartWith()

够拾惠商城系统开发详解

够拾惠商城系统开发app,够拾惠商城系统定制开发@136.1013.1824 杨小姐 在消费者主权时代,一切以消费者为主,企业生产什么由消费者决定,一切产品与服务围绕着消费者的偏好来运转,消费者的需求就是生产的目的.由此引发了一种新的体验经济的盛行,体验产品与服务也越来越多,先体验后埋单,这是新经济的新趋势. 够拾惠商城是由"惠州万商汇电子商务有限公司"重金投资研发推出的新型电子商务平台和营销模式. 够拾惠商城把普通消费者日常在商家(授权的联盟商家)的正常消费额通过本平台再赠送回去,通

关于“拾穗云谷”

这是一群拾穗者,在日常工作中,拾取点点滴滴,并记录下来...... 无若,lut,jhx,hyc ...... 2016年8月4日

Linux下的高级拾色器—Pick

导读 虽然大多数设计师都在使用 Mac,但也有一少部分在使用 Windows 甚至是 Linux 系统.在 Mac 和 Windows 中都有非常丰富的拾色器工具或插件可用,反而在开源界中这类颜色选择工具比较少见.如果你在寻找 Linux 中快捷.简便从屏幕「拾取颜色」的小工具,Pick 肯定会成为我向你推荐的首选. Pick 体积小巧.结构紧凑,而且完全开源,它可以方便地放大屏幕的任何部分,帮助我们快速拾取准确像素,并将颜色值信息复制到剪贴板或其它任意地方.拾取颜色的时间会在左侧将颜色的来源截

苹果帝国:正在夹缝中捡金子

苹果手机正在全世界的范围内流行开来,满大街的玫瑰金,关于iPhone的网络报道如果能印成报纸,再连起来,估计能绕地球20圈,科技.社会.教育.经济等领域地专家各出奇谋地解构苹果,但公众依旧不知道他们是如何做出iPhone4的,不知道他们用了什么方法让iOS如此稳定,也不知道iPhone的电池咋就这么不耐用,当然,普通人更搞不清楚的是,苹果手机已经诞生8年,两届大学生都毕业了,但依旧有人***去抢iPhone6s,让人咋舌的是他们的利润率持续攀升,最新数据表明,iPhone在整个智能手机领域利润占