非常经典的树形DP(假设不会树形DP建议先看下面..我就是先看了别的题,,握手的什么的)

给一棵树,留下N条边(它若留下边父亲的边比留下),,问最后苹果最多多少个.......

建树我认为非常费劲,,,毕竟不太会........DP比較好理解吧,,,,,,,就是多想一想把,,,,,当作模板题记录下来~~~~

#include <iostream>
#include <cstdio>
#include <bits/stdc++.h>

using namespace std;
const int maxn=101,maxq=100;
int n;//jieidanshu
int q;//baoliudebian
int g[maxn][maxn];//juzhenbiaoshiliangdianguanxi
int son[maxn][2]; //zijiedian
int apple[maxn]; //jiluzijieidanshang de pingguoshu
int dp[maxn][maxn]; //jiyihua
int flag[maxn];  //biaoji
int isleaf[maxn]; //jilushifouziye

void create(int root)
{
    int i,ct=0;
    for(i=1;i<=n;i++)
    {
        if(g[root][i]!=-1&&flag[i]==0) //zhaodaoleziye
        {
            son[root][ct++] = i; //diyigehuozhediergeziye
            apple[i]=g[root][i];
            flag[i] = 1;
            create(i); //jixujianshu
        }
    }
    if(ct==0)//meiyouziye
    {
        isleaf[root]=1;
    }
}

int treedp(int root, int num) //num biaoshi shengxiade dianshu
{
    if(num==0) return 0; //bushengxia
    if(isleaf[root]==1) return apple[root]; //zuihouyihang
    if(dp[root][num]!=-1) return dp[root][num];  //jiyihua
    int i,temp=0;
    for(i=0;i<num;i++)
    {
        temp=max(temp,treedp(son[root][0],i)+treedp(son[root][1],num-1-i));
    }
    dp[root][num]=temp+apple[root];
    //printf("%d**\n",dp[root][num]);
    return dp[root][num];
}

int main()
{
    int i,x,y,w;
    memset(g,-1,sizeof(g));
    scanf("%d%d",&n,&q);
    for(i=1;i<=n-1;i++)
    {
        scanf("%d%d%d",&x,&y,&w);
        g[x][y]=w;//zhelihenzhongyaodexiangfa!
        g[y][x]=w;
    }
    memset(flag,0,sizeof(flag));
    memset(isleaf,0,sizeof(isleaf));
    flag[1]=1;// 1 shi morende
    apple[1]=0;
    create(1);
    memset(dp,-1,sizeof(dp));
    printf("%d\n",treedp(1,q+1));
    return 0;
}

转载于:https://www.cnblogs.com/blfbuaa/p/7390212.html

URAL1018 Binary Apple Tree相关推荐

  1. Binary Apple Tree

    Let's imagine how apple tree looks in binary computer world. You're right, it looks just like a bina ...

  2. (树形dp)Binary Apple Tree

    Let's imagine how apple tree looks in binary computer world. You're right, it looks just like a bina ...

  3. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)

    Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...

  4. 笔试算法题(58):二分查找树性能分析(Binary Search Tree Performance Analysis)

    议题:二分查找树性能分析(Binary Search Tree Performance Analysis) 分析: 二叉搜索树(Binary Search Tree,BST)是一颗典型的二叉树,同时任 ...

  5. 【ACM】二叉搜索树(Binary Search Tree /BS Tree) 小结

    动态管理集合的数据结构--二叉搜索树 搜索树是一种可以进行插入,搜索,删除等操作的数据结构,可以用字典或者优先队列. 二叉排序树又称为二叉查找树,他或者为空树,或者是满足如下性质的二叉树. (1)若它 ...

  6. 二叉搜索树(binary search tree)的建立、删除、查找

    由于输入的数据顺序不同,建立的bst会不一样.最坏的情况就是一个链,所以我们引入了平衡二叉树的概念.这里我们先来看binary search tree.(我随笔里面有一些相关知识) 建立(也就是插入) ...

  7. 查找二叉树中出现次数最多的数 Find Mode in Binary Search Tree

    为什么80%的码农都做不了架构师?>>>    问题: Given a binary search tree (BST) with duplicates, find all the  ...

  8. LeetCode 426. Convert Binary Search Tree to Sorted Doubly Linked List--转换二叉树为双向链表--Java,C++,Python解法

    题目地址:Convert Binary Search Tree to Sorted Doubly Linked List - LeetCode Convert a BST to a sorted ci ...

  9. LeetCode: 109. Convert Sorted List to Binary Search Tree

    题目 Given a singly linked list where elements are sorted in ascending order, convert it to a height b ...

最新文章

  1. AttributerError: HTTPServer instance has no attribute 'server_forever'
  2. MATLAB的iptcheckinput函数详解
  3. 二阶差分预测后数据还原公式_携程如何基于ARIMA时序分析做业务量的预测
  4. VS.NET 2003 安装问题
  5. 【翻译】.NET 5 Preview5发布
  6. 内置函数之sorted,filter,map
  7. 广技师17专插本c语言答案,广东技术师范学院2017年专插本C语言程序设计(1)
  8. rocketMQ基本架构简介
  9. ubuntu 14.10 64bit系统安装MBuntu主题(仿Mac主题)
  10. 基于CentOS构建高性能的LAMP平台
  11. 为什么Prim算法不适用于带权有向图
  12. 设计师常用网页小图标大全
  13. Hibernate相关内容
  14. ORACLE 数据库的级联查询 一句sql搞定(部门多级)
  15. 使用miniSipServer为中小企业搭建VOIP服务器
  16. 常用的软件测试方法及特点分析
  17. 行驶证OCR识别,信息提取
  18. gc0329曝光时间设置
  19. 正则表达式 '^[a-zA-Z0-9''-'\s]{1,30}$' 代表什么意思?
  20. 制作和删除软RAID

热门文章

  1. linux 重启oracle_学习Linux前需要知道的事
  2. 电脑无法检查计算机更新,安装win7系统弹出错误提示无法检查更新的方法
  3. nginx tomcat spring-boot 对json等数据压缩
  4. docker集群部署:第3部分:服务
  5. PyCharm中的快捷键不能用怎么办?(复制粘贴)
  6. Exchange Server 2010部署安装之一
  7. 设计模式:给你生产一个女朋友---工厂方法模式
  8. MySQL服务器意外关机-无法启动多实例
  9. Jquery调用WCF经验分享
  10. 【实用工具】交叉编译android版本的GDB