树形DP要有自己的风格,转二叉树是基础,考虑边界最头疼。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int point[],next[],v[],c[],cnt=,N,M,K,f[][][],d[],con[],pre[];
int l[],r[];
bool p[];
void insect(int x,int y,int z){next[cnt]=point[x];point[x]=cnt;v[cnt]=y;c[cnt]=z;cnt++;}
void dfs(int x)
{
int i,j=-;
for (i=point[x];i!=-;i=next[i])
if (p[v[i]]==)
{
p[v[i]]=;
if (l[x]==) l[x]=v[i],d[v[i]]=c[i],pre[v[i]]=,j=l[x]; else
{
r[j]=v[i]; d[v[i]]=c[i]; pre[r[j]]=j; j=r[j];
}
}
if (j==-) return;
dfs(j); con[j]=con[l[j]]+;
while (pre[j]!=) j=pre[j],dfs(j),con[j]=con[l[j]]+con[r[j]]+;
}
int dp(int x,int k,int t)
{
if (x==) return ;
if (f[x][k][t]!=-) return f[x][k][t];
int i,l1,r1,num=;
for (i=;i<k;++i)
if ((i<=con[l[x]])&&(k--i<=con[r[x]]))
{
l1=dp(l[x],i,);
r1=dp(r[x],k--i,t);
num=min(num,l1+r1+(t==)*d[x]);
}
for (i=;i<=k;++i)
if ((i<=con[l[x]])&&(k-i<=con[r[x]]))
{
l1=dp(l[x],i,);
r1=dp(r[x],k-i,t);
num=min(num,l1+r1+(M==)*(t==)*d[x]);
}f[x][k][t]=num;
return num;
}
int main()
{
memset(point,-,sizeof(point));
memset(next,-,sizeof(next));
memset(f,-,sizeof(f));
memset(v,,sizeof(v));
memset(c,,sizeof(c));
memset(p,,sizeof(p));
scanf("%d %d %d\n",&N,&M,&K);
if (K+M->N) {printf("-1\n");return ;}
int i,a,b,c;
for (i=;i<N;++i)
{
scanf("%d %d %d\n",&a,&b,&c);
insect(a,b,c);insect(b,a,c);
}p[]=; dfs();
printf("%d\n",dp(l[],K-,));
return ;
}

vijos p1523 贪吃的九头龙 思考思考再思考,就荒废了4小时的更多相关文章

  1. Vijos 1523 贪吃的九头龙 【树形DP】

    贪吃的九头龙 背景 安徽省芜湖市第二十七中学测试题 NOI 2002 贪吃的九头龙(dragon) Description:OfficialData:OfficialProgram:Converted ...

  2. 贪吃的九头龙(tyvj P1523)

    T2 .tyvj   P1523贪吃的九头龙 描述 传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于 ...

  3. Vijos1523贪吃的九头龙【树形DP】

    贪吃的九头龙 传说中的九头龙是一种特别贪吃的动物.虽然名字叫"九头龙",但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头 ...

  4. [codevs1746][NOI2002]贪吃的九头龙

    [codevs1746][NOI2002]贪吃的九头龙 试题描述 传说中的九头龙是一种特别贪吃的动物.虽然名字叫"九头龙",但这只是说它出生的时候有九个头,而在成长的过程中,它有时 ...

  5. [NOI2002]贪吃的九头龙(树形dp)

    [NOI2002]贪吃的九头龙 题目背景 传说中的九头龙是一种特别贪吃的动物.虽然名字叫"九头龙",但这只是 说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的 ...

  6. vojis1523 NOI2002 贪吃的九头龙

    描述 传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落. 有一天, ...

  7. codevs1746 贪吃的九头龙

    [问题描述]传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落.有一 ...

  8. codevs贪吃的九头龙

    传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落.有一天,有M 个 ...

  9. [NOI2002] 贪吃的九头龙

    题目类型:树形DP 传送门:>Here< 题意:有一只九头龙要吃了一颗树,给出一棵\(N\)个节点的带边权的树.九头龙有\(M\)个头,其中一个是大头,大头要吃恰好\(K\)个节点,其他头 ...

随机推荐

  1. 不会UML的程序员不是好构架师?

    情况描述 我已经工作两年半, 参加过一个网页游戏项目和一个IOS应用项目, 自以为参与度非常高, 也经常涉及到底层引擎和主逻辑业务. 目前想更快的向构架师方向发展. 最近在看\<Learning ...

  2. codeforces 712B B. Memory and Trident(水题)

    题目链接: B. Memory and Trident time limit per test 2 seconds memory limit per test 256 megabytes input ...

  3. MySQL遇到check the manual that corresponds to your MySQL server version for the right syntax错误

    用MySQL新建了一个Order表,插入了一条数据.总是显示 You have an error in your SQL syntax; check the manual thatcorrespond ...

  4. 第24章 SEH结构化异常处理_异常处理及软件异常

    24.1  程序的结构 (1)try/except框架 __try{ //被保护的代码块 …… } __except(except fileter/*异常过滤程序*/){ //异常处理程序 } (2) ...

  5. html和css知识总结

    今天把整个html和css的总结了一遍.可能还有疏忽之处,共同学习吧 [行为样式三者分离] 不加行内css样式,不加行内js效果 [标签]1>单标签<!doctype html> 文 ...

  6. mysqli_stmt预处理类的使用

  7. poj 1159 Palindrome

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 59094   Accepted: 20528 Desc ...

  8. WorldWind源码剖析系列:BMNG类构造函数深入分析

    BMNG构造函数深入分析 一.主要类图 二.主要功能: 1)        BMNG类 BMNG类将包含以“Blue Marble”为主题的所有可渲染影像的根节点添加到当前星球的可渲染对象列表中,包括 ...

  9. Winform调用百度地图接口

    using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using ...

  10. 设计传说 PS零基础精通 Photoshop CC 2015视频教程

           课程目录: 课时1 Photoshop CC 2015 全面技能培训介绍  03:08课时2 1.1 PSCC工作区域及面板自定义 08:47课时3 1.2 图像文件的多种打开方式 0 ...