MZOJ 1134: 二叉苹果树
按书上大的,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: 二叉苹果树的更多相关文章
- CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划)
CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划) Description 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的 ...
- Luogu_2015 二叉苹果树
题目链接 SB 裸题……就是想随便挂在这里……同样的题还有 Luogu_2014 选课. Luogu_2015 二叉苹果树 #include <queue> #include <cs ...
- 二叉苹果树|codevs5565|luoguP2015|树形DP|Elena
二叉苹果树 题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的 ...
- P2015 二叉苹果树
P2015 二叉苹果树 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接 ...
- Loj10153 二叉苹果树
题目描述 有一棵二叉苹果树,如果数字有分叉,一定是分两叉,即没有只有一个儿子的节点.这棵树共 NN 个节点,标号 11 至 NN,树根编号一定为 11. 我们用一根树枝两端连接的节点编号描述一根树枝的 ...
- 洛谷 P2015 二叉苹果树 (树上背包)
洛谷 P2015 二叉苹果树 (树上背包) 一道树形DP,本来因为是二叉,其实不需要用树上背包来干(其实即使是多叉也可以多叉转二叉),但是最近都刷树上背包的题,所以用了树上背包. 首先,定义状态\(d ...
- 洛谷p2015二叉苹果树&yzoj1856多叉苹果树题解
二叉 多叉 有一棵苹果树,如果树枝有分叉,可以是分多叉,分叉数k>=0(就是说儿子的结点数大于等于0)这棵树共有N个结点(叶子点或者树枝分叉点),编号为1~N,树根编号一定是1.我们用一根树枝两 ...
- P2015 二叉苹果树,树形dp
P2015 二叉苹果树 题目大意:有一棵二叉树性质的苹果树,每一根树枝上都有着一些苹果,现在要去掉一些树枝,只留下q根树枝,要求保留最多的苹果数(去掉树枝后不一定是二叉树) 思路:一开始就很直接的想到 ...
- [Luogu2015]二叉苹果树(树形dp)
[Luogu2015] 二叉苹果树 题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. ...
随机推荐
- 第十一章 串 (b2)蛮力匹配
- (转)FFMPEG filter使用实例(实现视频缩放,裁剪,水印等)
本文转载自http://blog.csdn.net/li_wen01/article/details/62442162 FFMPEG官网给出了FFMPEG 滤镜使用的实例,它是将视频中的像素点替换成字 ...
- Mysql 索引与Key
如果只是key的话,就是普通索引. mysql的key和index多少有点令人迷惑,单独的key和其它关键词结合的key(primary key)实际表示的意义是不同,这实际上考察对数据库体系结构的了 ...
- Balanced Numbers (数位DP)
Balanced Numbers https://vjudge.net/contest/287810#problem/K Balanced numbers have been used by math ...
- Codeforces Beta Round #69 (Div. 2 Only)
Codeforces Beta Round #69 (Div. 2 Only) http://codeforces.com/contest/80 A #include<bits/stdc++.h ...
- HDU 2680 Choose the best route(SPFA)
Problem DescriptionOne day , Kiki wants to visit one of her friends. As she is liable to carsickness ...
- iOS 组件化流程详解(git创建流程)
[链接]组件化流程详解(一)https://www.jianshu.com/p/2deca619ff7e
- js第三天知识点 循环
/*for(重点) *while *do..while * *3种循环的区别: *for 主要适用于 明确循环次数的 循环 *while 适用于 不明确循环次数的循环 *do..while 适用于 ...
- webpack.dev.conf.js
var utils = require('./utils')var webpack = require('webpack')var config = require('../config') // 一 ...
- Linux下Python2升级Python3
Linux下Python2的升级方法: 一.下载Python3安装包: 1.在线下载 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2 ...