按书上大的,dfs还需加强

 #include <bits/stdc++.h>
 #define read read()
 using namespace std;

 int read
 {
     ; char ch = getchar();
      || ch > ) ch = getchar();
     && ch <= ) { x =  * x + ch - ; ch = getchar();}
     return x;
 }

 ;

 int n,q;
 int head[N],size;
 bool vis[N];
 int l[N],r[N],a[N],tot[N];
 int f[N][N];

 struct edge{
     int v,nxt,w;
 }e[N<<];

 void add(int u,int v,int w)
 {
     e[++size].v = v;
     e[size].w = w;
     e[size].nxt = head[u];
     head[u] = size;
 }

 void readdata()
 {
     n = read; q = read; q++;
     int u,v,w;
     ; i < n; i++)
     {
         u = read; v = read; w = read;
         add(u,v,w);
         add(v,u,w);
     }
 }

 void maketree(int u)
 {
     for(int i = head[u]; i ; i = e[i].nxt)
     {
         int v = e[i].v;
         if(vis[v]) continue;
         a[v] = e[i].w;
         vis[v] = ;
         l[u] = v;
         maketree(v);
         break;
     }
     for(int i = head[u]; i ; i = e[i].nxt)
     {
         int v = e[i].v;
         if(vis[v]) continue;
         a[v] = e[i].w;
         vis[v] = ;
         r[u] = v;
         maketree(v);
         break;
     }

 }

 int dp(int i,int j)
 {
     ;
     if(!l[i] && !r[i] )return a[i];
     if(f[i][j]) return f[i][j];
         ; k < j; k++)
             f[i][j] = max(f[i][j], dp(l[i],k) + dp(r[i],j -  - k) + a[i]);
     return f[i][j];
 }

 void work()
 {
     vis[] = ;
     maketree();
     /*for(int i = 1; i <= n; i++)
     {
         printf("%d %d \n",l[i],r[i]);
     }*/
     //for(int i = 1; i <= n; i++) printf("%d ",a[i]);
     printf(,q));
 }

 int main()
 {
 //    freopen("apple tree.in","r",stdin);
     readdata();
     work();
     ;
 }

MZOJ 1134: 二叉苹果树的更多相关文章

  1. CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划)

    CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划) Description 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的 ...

  2. Luogu_2015 二叉苹果树

    题目链接 SB 裸题……就是想随便挂在这里……同样的题还有 Luogu_2014 选课. Luogu_2015 二叉苹果树 #include <queue> #include <cs ...

  3. 二叉苹果树|codevs5565|luoguP2015|树形DP|Elena

    二叉苹果树 题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的 ...

  4. P2015 二叉苹果树

    P2015 二叉苹果树 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接 ...

  5. Loj10153 二叉苹果树

    题目描述 有一棵二叉苹果树,如果数字有分叉,一定是分两叉,即没有只有一个儿子的节点.这棵树共 NN 个节点,标号 11 至 NN,树根编号一定为 11. 我们用一根树枝两端连接的节点编号描述一根树枝的 ...

  6. 洛谷 P2015 二叉苹果树 (树上背包)

    洛谷 P2015 二叉苹果树 (树上背包) 一道树形DP,本来因为是二叉,其实不需要用树上背包来干(其实即使是多叉也可以多叉转二叉),但是最近都刷树上背包的题,所以用了树上背包. 首先,定义状态\(d ...

  7. 洛谷p2015二叉苹果树&yzoj1856多叉苹果树题解

    二叉 多叉 有一棵苹果树,如果树枝有分叉,可以是分多叉,分叉数k>=0(就是说儿子的结点数大于等于0)这棵树共有N个结点(叶子点或者树枝分叉点),编号为1~N,树根编号一定是1.我们用一根树枝两 ...

  8. P2015 二叉苹果树,树形dp

    P2015 二叉苹果树 题目大意:有一棵二叉树性质的苹果树,每一根树枝上都有着一些苹果,现在要去掉一些树枝,只留下q根树枝,要求保留最多的苹果数(去掉树枝后不一定是二叉树) 思路:一开始就很直接的想到 ...

  9. [Luogu2015]二叉苹果树(树形dp)

    [Luogu2015] 二叉苹果树 题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. ...

随机推荐

  1. 【转】iOS 自动化性能采集

      前言 对于iOS总体生态是比较封闭的,相比Android没有像adb这种可以查看内存.cpu的命令.在日常做性能测试,需要借助xcode中instruments查看内存.cpu等数据. 但是借助i ...

  2. checkbox/radio 样式修改

    只改颜色 input[type=radio],input[type=checkbox] { display: inline-block; vertical-align: middle; width: ...

  3. JS获取鼠标左(右)滑事件

    鼠标左(右)滑也是网站开发中常见的效果之一,这里对鼠标左(右)滑做出一些解释. 首先要获取需要左右滑事件的节点: eg: var div=document.getElementById("d ...

  4. Delphi: 模态窗体最小化

    源起: 近期所介入的几个项目中,最后视频生成窗体,为一模态对话框.因生成时间可能较长,所以其窗体可以最小化,它最小化时同时最小化主程序,唤醒时主程序再复原. 代码亦是8年前本人所写,一直那样用了,也没 ...

  5. [leetcode]151. Reverse Words in a String翻转给定字符串中的单词

    Given an input string, reverse the string word by word. Example: Input: "the sky is blue", ...

  6. Java_7.1 ArrayList应用点名器

    1.ArrayList同样可以添加自定义的类 将学生类添加到ArrayList集合中,其中学生类包括学生姓名,年龄 自定义学生类 package demo1; public class Student ...

  7. js substring

    substring的起始为左闭右开区间,也就是[1,3)结束位置为2,千万不要搞错了哦. 其他关于这个点的资料连接 聊聊左闭右开区间:https://www.cnblogs.com/owenandhi ...

  8. Charles抓取https包

    Android: 1.若滑动解锁,请先设置屏幕锁: 2.然后浏览器输入Charlesproxy.com/getssl,安装证书,出现安装证书提示,随便打个名称 比如Android,选择WLAN(这里A ...

  9. python 虚拟环境操作 virtualenv +virtualenvwrapper

    Window 下创建python的虚拟环境 下载工具 pip install virtualenv 创建虚拟环境目录 # 注意此命令创建的虚拟环境目录是在当前目录下 virtualenv testen ...

  10. opencv 形态学操作应用-提取水平与垂直线

    adaptiveThreshold(~gray_src, binImg, , ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, , -); #include <ope ...