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\)个节点,其他头 ...
随机推荐
- css+js自动化开发之第十五天
一.css上一篇的补充 1.position(页面分层) (1)fiexd将标签固定在页面的某个位置 position属性:top,left,right,bottom (2)relative+abso ...
- Unity3d 基础知识学习 工具篇
Unity3d 层(layer)的学习 @广州小龙 unity中的层是个很有用的东西, 点击层的下拉框,点击Add Layer,可以打开层管理器,我新建了一个层为test 他的id值是8,这个后面会 ...
- UIPickerView 地区解析 -- 全国省、市、区 plist 解析 -- 读取UIPickerView 当前显示内容
一个简单的plist 解析过程,借助UIPickerView 实现了手选全国的 省市区 方法, 源码中有详细注释:长句自己可以拆开看,最好的方法是,拆开,并打印,查看每一步打印的结果,结合Plist文 ...
- 硬盘IO,SAS,SATA,和HD TUNE
SAS的接口技术可以向下兼容SATA.具体来说,二者的兼容性主要体现在物理层和协议层的兼容. SAS系统的背板(Backplane)既可以连接具有双端口.高性能的SAS驱动器,也可以连接高容量.低成本 ...
- STM32F10x 学习笔记6(USART实现串口通讯 2)
这次讲讲利用串口收发中断来进行串口通讯.STM32 上为每个串口分配了一个中断.也就是说无论是发送完成还是收到数据或是数据溢出都产生同一个中断.程序需在中断处理函数中读取状态寄存器(USART_SR) ...
- 揪出“凶手”——实战WinDbg分析电脑蓝屏原因
http://www.appinn.com/blue-screen-search-code/ 蓝屏代码查询器 – 找出蓝屏的元凶 11 文章标签: windows / 系统 / 蓝屏. 蓝屏代码查询器 ...
- 深入浅出 Java Concurrency (4): 原子操作 part 3 指令重排序与happens-before法则
转: http://www.blogjava.net/xylz/archive/2010/07/03/325168.html 在这个小结里面重点讨论原子操作的原理和设计思想. 由于在下一个章节中会谈到 ...
- 【转】【已解决】Android中ActionBar中不显示overflow(就是三个点的那个按钮)--不错
原文网址:http://www.crifan.com/android_actionbar_three_dot_overflow_not_show/ [问题] 折腾: [记录]继续尝试给Android程 ...
- Contains Duplicate II ——LeetCode
Given an array of integers and an integer k, find out whether there there are two distinct indices i ...
- [已解决问题] Could not find class XXX referenced from method XXX.<YYY>
导入Jar包的问题,有时候即使引入了Jar包也会报错,比如我在引入了libsvm.jar后仍然会报此错 解决方法是: Step 1. 创建User library,随便命一个名,然后把Jar包导入 S ...