codevs 1746 贪吃的九头龙
/*
状态定义的没错 就是考试的时候傻啦吧唧的转移左右孩子
其实之转移父亲就简单多了 不用考虑那么多
还有就是偷懒没有把谁有没有找过这个信息转过去
而是搞了个全局变量…wa到挺
再就是特盘的时候还有终止条件写的不好
写的时间也很长 …..
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 510
#define inf 0x3f3f3f3f
using namespace std;
int n,m,K,num,head[maxn],fa[maxn],lc[maxn],rc[maxn],dis[maxn];
int son[maxn][maxn],s[maxn],f[maxn][maxn][],V[maxn];
struct node{int u,v,t,pre;}e[maxn*];
void Add(int from,int to,int dis)
{
num++;e[num].u=from;
e[num].v=to;e[num].t=dis;
e[num].pre=head[from];
head[from]=num;
}
void Dfs(int now,int from)
{
fa[now]=from;
for(int i=head[now];i;i=e[i].pre)
if(e[i].v!=from)
{
son[now][++s[now]]=e[i].v;
dis[e[i].v]=e[i].t;
Dfs(e[i].v,now);
}
}
void Build()
{
for(int i=;i<=n;i++)
for(int j=;j<=s[i];j++)
{
int u=i,v=son[i][j];
if(lc[u]==){lc[u]=v;continue;}
u=lc[u];while(rc[u])u=rc[u];
rc[u]=v;
}
}
int C(int t)
{
if(m==&&t==)return ;
else return ;
}
int DP(int k,int p,int t)
{
if(k==&&p)return f[k][p][t]=inf;
if(f[k][p][t]>=)return f[k][p][t];
if(k==&&p==)return ;
int r=inf;
for(int i=;i<=p;i++)
{
int s1=p-i,s2=i;
r=min(r,DP(lc[k],s1,)+DP(rc[k],s2,t)+C(t)*dis[k]);
}
for(int i=;i<=p-;i++)
{
int s1=p-i-,s2=i;
r=min(r,DP(lc[k],s1,)+DP(rc[k],s2,t)+t*dis[k]);
}
return f[k][p][t]=r;
}
int main()
{
scanf("%d%d%d",&n,&m,&K);
if(n-K<m-){printf("-1\n");return ;}
memset(f,-,sizeof(f));
int a,b,c;
for(int i=;i<n;i++)
{
scanf("%d%d%d",&a,&b,&c);
Add(a,b,c);Add(b,a,c);
}
Dfs(,);Build();V[]=;
printf("%d\n",DP(lc[],K-,));
return ;
}
codevs 1746 贪吃的九头龙的更多相关文章
- Vijos1523贪吃的九头龙【树形DP】
贪吃的九头龙 传说中的九头龙是一种特别贪吃的动物.虽然名字叫"九头龙",但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头 ...
- [codevs1746][NOI2002]贪吃的九头龙
[codevs1746][NOI2002]贪吃的九头龙 试题描述 传说中的九头龙是一种特别贪吃的动物.虽然名字叫"九头龙",但这只是说它出生的时候有九个头,而在成长的过程中,它有时 ...
- 贪吃的九头龙(tyvj P1523)
T2 .tyvj P1523贪吃的九头龙 描述 传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于 ...
- Vijos 1523 贪吃的九头龙 【树形DP】
贪吃的九头龙 背景 安徽省芜湖市第二十七中学测试题 NOI 2002 贪吃的九头龙(dragon) Description:OfficialData:OfficialProgram:Converted ...
- [NOI2002]贪吃的九头龙(树形dp)
[NOI2002]贪吃的九头龙 题目背景 传说中的九头龙是一种特别贪吃的动物.虽然名字叫"九头龙",但这只是 说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的 ...
- codevs贪吃的九头龙
传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落.有一天,有M 个 ...
- codevs1746 贪吃的九头龙
[问题描述]传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落.有一 ...
- vojis1523 NOI2002 贪吃的九头龙
描述 传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落. 有一天, ...
- [NOI2002] 贪吃的九头龙
题目类型:树形DP 传送门:>Here< 题意:有一只九头龙要吃了一颗树,给出一棵\(N\)个节点的带边权的树.九头龙有\(M\)个头,其中一个是大头,大头要吃恰好\(K\)个节点,其他头 ...
随机推荐
- js两个时间相减
平常总会遇到需要算两个日期之间是多少天,以下是使用JavaScript算时间差多少天的: // 给日期类对象添加日期差方法,返回日期与diff参数日期的时间差,单位为天 Date.prototype. ...
- ios的Ping++支付接入步骤-b
1. Client 发送支付要素给 Server 2. Server 发送支付请求并将返回的支付凭据传给 Client 3. Client 调起支付控件完成支付 4. 渠道同步返回支付结果给 Clie ...
- iOS9 以上的真机调试 不用证书
具体流程如下: 首次使用AppleID 的注意事项: 要在设置中 进行 如下操作 设置--通用--描述文件 ---添加信任 但是有时候 还是 会不能调试, 显示信息 是这样的 : ...
- gcc链接g++编译生成的静态库和动态库的makefile示例
使用c++开发程序或者库时,将库提供给其他人使用. 然而使用者是使用c开发的程序,链接g++编译生成的库时,于链接gcc生成的库,有所不同. 首先是静态库,以链接g++编译生成的libmylib.a为 ...
- JavaScript 项目构建工具 Grunt 实践:安装和创建项目框架
Grunt 是一个基于任务的 JavaScript 项目命令行构建工具,运行于 Node.js 平台.Grunt 能够从模板快速创建项目,合并.压缩和校验 CSS & JS 文件,运行单元测 ...
- codeforces C. Prime Swaps
题意:给你n个数,然后在交换次数小于等于5×n的情况下使得这个序列变成升序,输出次数; 思路:哥德巴赫猜想:任何一个大于5的数都可以写成三个质数之和.尽可能的找大的素数,从1的位置向右逐步的调整,每一 ...
- JSP出现中文乱码问题
今天纠结了好半天,本地运行程序后没有中文乱码,唯独发到服务器后运行出现了乱码. 究其原因,皆因eclipse环境默认的JSP编码是Iso-8859-1,需要将其改为utf-8,与JSP文件中的编码声明 ...
- PL/SQL developer export/import (转)
export/import图标为灰色:原因:相关应用程序没有关联菜单栏 --> Tools --> Import Tables... --> Oracle Import Export ...
- iostat 使用说明
LINUX [oracle@perass back]$ iostat -m 1 10 Linux 2.6.18-194.el5 (perass) 03/01/2014 avg-cpu: %user % ...
- 图论(KM算法,脑洞题):HNOI 2014 画框(frame)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABPoAAANFCAIAAABtIwXVAAAgAElEQVR4nOydeVxTV/r/n9ertaJEC4