vijos p1523 贪吃的九头龙(未完成)

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 int point[303],next[603],v[603],c[603],cnt=0,N,M,K,f[303][303][2];
 6 bool p[303];
 7 void insect(int x,int y,int z){next[cnt]=point[x];point[x]=cnt;v[cnt]=y;c[cnt]=z;cnt++;}
 8 void dfs(int x)
 9 {
10     int i,j;
11     for (i=point[x];i!=-1;i=next[i])
12     {
13         if (l[x]==0) l[x]=v[i],p[v[i]]=1; else
14         {
15             j=l[x];
16             while (r[j]!=0) j=r[j];
17             r[j]=v[i]; p[v[i]]=1;
18         }
19     }
20     i=l[x];
21     while (i!=0) dfs(i),i=r[i];
22 }
23 void
24 int main()
25 {
26     memset(point,-1,sizeof(point));
27     memset(next,-1,sizeof(next));
28     memset(v,0,sizeof(v));
29     memset(c,0,sizeof(c));
30     memset(p,0,sizeof(p));
31     scanf("%d %d %d\n",&N,&M,&K);
32     if (K+M-1>N) {printf("-1\n");return 0;}
33     int i,a,b,c;
34     for (i=1;i<N;++i)
35     {
36         scanf("%d %d %d\n",&a,&b,&c);
37         insect(a,b,c);insect(b,a,c);
38     }p[1]=1; dfs(1);
39     printf("%d\n",dp(1,K,1));
40 }
时间: 2024-10-11 23:07:33

vijos p1523 贪吃的九头龙(未完成)的相关文章

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

贪吃的九头龙 背景 安徽省芜湖市第二十七中学测试题 NOI 2002 贪吃的九头龙(dragon) Description:OfficialData:OfficialProgram:Converted by JackDavid127 描述 传说中的九头龙是一种特别贪吃的动物.虽然名字叫"九头龙",但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落. 有一天,有M个脑袋的九头龙看到一棵长有N个果子的果树,喜出望外,

NOI2002 贪吃的九头龙

[问题描述] 传说中的九头龙是一种特别贪吃的动物.虽然名字叫"九头龙",但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落. 有一天,有M个脑袋的九头龙看到一棵长有N个果子的果树,喜出望外,恨不得一口把它全部吃掉.可是必须照顾到每个头,因此它需要把N个果子分成M组,每组至少有一个果子,让每个头吃一组. 这M个脑袋中有一个最大,称为"大头",是众头之首,它要吃掉恰好K个果子,而且K个果子中理所当

codevs贪吃的九头龙

传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落.有一天,有M 个脑袋的九头龙看到一棵长有N 个果子的果树,喜出望外,恨不得一口把它全部吃掉.可是必须照顾到每个头,因此它需要把N 个果子分成M组,每组至少有一个果子,让每个头吃一组.这M个脑袋中有一个最大,称为“大头”,是众头之首,它要吃掉恰好K个果子,而且K个果子中理所当然地应该包括唯一的一个最大的果子.果子由N

多叉树转二叉树+树形dp(codevs 1746 贪吃的九头龙 2002noi)

题目传送门 看到这个题目我们要先把问题简化了,条件中是多叉树,我们可以把它转换成二叉树,左边是儿子右边是兄弟的储存方式. 首先先判断否的部分,当总的果子小于需求,也就是N-k<M-1时输出-1. 我们再判断是的部分 如果没有大头,一定存在难受值为0的方案但是现在题目中有大头,我们就可以按按照小头的个数进行分类 1.有一个小头,我们要考虑小头和大头的难受值之和. 2.有多个小头,因为小头可以在奇偶的进行变换,所以我们只需要考虑大头的难受值. 分析到这里,我们就可以发现是树形dp我们设f[i][j]

Vijos1523 NOI2002 贪吃的九头龙 树形dp

思路不算很难,但细节处理很麻烦 前面建图.多叉转二叉,以及确定dp处理序列的过程都是套路,dp的状态转移过程以注释的形式阐述 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <queue> 5 6 int N,M,K; 7 8 struct Edge 9 { 10 int to,next; 11 int weight; 12 void assign(int

codevs 1746 贪吃的九头龙

/* 状态定义的没错 就是考试的时候傻啦吧唧的转移左右孩子 其实之转移父亲就简单多了 不用考虑那么多 还有就是偷懒没有把谁有没有找过这个信息转过去 而是搞了个全局变量…wa到挺 再就是特盘的时候还有终止条件写的不好 写的时间也很长 ….. */ #include<iostream> #include<cstdio> #include<cstring> #define maxn 510 #define inf 0x3f3f3f3f using namespace std;

贪吃的九头龙

树形dp #include<bits/stdc++.h> #define N 305 using namespace std; struct LEB{ int to,nxt,w; }e[N<<1]; int f[N][N][2]; int tmp[N][2]; int head[N]; int n,m,k,x,z,y,cnt; void Build(int x,int y,int z){ e[++cnt]=(LEB){y,head[x],z}; head[x]=cnt; } voi

美杜莎和九头蛇的对比

1.介绍 1.1九头蛇 每个密码安全性研究都显示,最大的安全漏洞是密码.该工具是概念证明代码,旨在为研究人员和安全顾问提供可能性,以显示从远程访问系统获得未经授权的访问将多么容易. 此工具仅用于法律目的! 已经有几种登录黑客工具,但是,没有一个工具支持多种协议来攻击或支持并行连接. 经过测试,它可以在Linux,Windows / Cygwin,Solaris,FreeBSD / OpenBSD,QNX(Blackberry 10)和MacOS上完全编译. 当前,该工具支持以下协议:Asteri

动归题目

[POJ1141]括号序列 [POJ1191]棋盘分割 [SPOJ196]决斗 [AOA]跳舞机 [AOA]积木游戏 [AOA]艺术馆的火灾 [AOA]机器人的名字 [UVa10559]方块消除 [AOA]公路巡逻 [POJ1074]并行期望值 [AOA]高性能计算机 [AOA]模板匹配 [AOA]不可解码的编码 [AOA]青蛙的烦恼 [AOA]排列问题 [AOA]最优排序二叉树 [POJ1038] Bugs公司 [UVa10531]迷宫统计 [AOA]贪吃的九头龙 [AOA]快乐的蜜月 [AO