- 浏览: 36809 次
- 性别:
- 来自: 湖南
最新评论
-
kulinglei:
提烟而过 写道问下楼主:你是拿了别人的注册号在这里害别人,还是 ...
折半搜索 -
jy00105276:
没看代码,看描述难道是2分法?
是的话不一定是a[i-1] ...
折半搜索 -
提烟而过:
问下楼主:你是拿了别人的注册号在这里害别人,还是没事在这里装- ...
折半搜索 -
zqynux:
fffvvvzz 写道11-15
是
11 12 13 14 ...
折半搜索 -
zqynux:
额,, 就是一个NOIP题目的答案..
vijos 谁拿了最多奖学金
Farmer John is considering purchasing a new herd of cows. In this new herd, each mother cow gives birth to two children. The relationships among the cows can easily be represented by one or more binary trees with a total of N (3 <= N < 200) nodes. The trees have these properties:
The degree of each node is 0 or 2. The degree is the count of the node's immediate children.
The height of the tree is equal to K (1 < K <100). The height is the number of nodes on the longest path from the root to any leaf; a leaf is a node with no children.
How many different possible pedigree structures are there? A pedigree is different if its tree structure differs from that of another pedigree. Output the remainder when the total number of different possible pedigrees is divided by 9901.
PROGRAM NAME: nocows
INPUT FORMAT
Line 1: Two space-separated integers, N and K.
SAMPLE INPUT (file nocows.in)
5 3
OUTPUT FORMAT
Line 1: One single integer number representing the number of possible pedigrees MODULO 9901.
SAMPLE OUTPUT (file nocows.out)
2
OUTPUT DETAILS
Two possible pedigrees have 5 nodes and height equal to 3:
@ @
/ \ / \
@ @ and @ @
/ \ / \
@ @ @ @
USACO_2.3-2:Cow Pedigrees奶牛家谱
Time Limit:1000MS Memory Limit:65536K
Total Submit:1 Accepted:1
Description
农民约翰准备购买一群新奶牛。 在这个新的奶牛群中, 每一个母亲奶牛都生两小奶牛。这些奶牛间的关系可以用二叉树来表示。这些二叉树总共有N个节点(3 <= N < 200)。这些二叉树有如下性质:
每一个节点的度是0或2。度是这个节点的孩子的数目。
树的高度等于K(1 < K < 100)。高度是从根到任何叶子的最长的路径上的节点的数目; 叶子是指没有孩子的节点。
有多少不同的家谱结构? 如果一个家谱的树结构不同于另一个的, 那么这两个家谱就是不同的。输出可能的家谱树的个数除以9901的余数。
Input
PROGRAM NAME: nocows
第1行: 两个空格分开的整数, N和K。
Output
第 1 行: 一个整数,表示可能的家谱树的个数除以9901的余数。
Sample Input
SAMPLE INPUT (file nocows.in)
5 3
Sample Output
SAMPLE OUTPUT (file nocows.out)
2
======================== 华丽的分割线 ========================
题目是看懂了,, 意思就是说用N个节点构造一个高度为K的二叉树, 且每个节点的度不能为1(即只能要么有两个儿子, 要么就没有没有孩子.), 题目我是理解了, 也清楚得很是用DP.. 但是不太会做.. DP没学好.. (自卑中)
终于吧DP返程看懂了.~!~!~! 狂High中..
f[i][j] 代表用i各节点构成最多j层的二叉树有多少种情况, 那么
f[i][j] = ∑(f[m][j-1] * f[i-1-m][j-1])(m = 1, 2, 3 ... i - 1)
m是左子树的节点个数,, 那么i - m 就是除了左子树节点个数之外的节点个数, 再除根节点, 即 i - m - 1就是右子树的节点个数..
代码能有两个优化的地方(我能够想到的只有这两个),
第一个就是在DP方程中f[i][j] 和 f[m][j] 都一定是奇数, 因为如果是偶数的话就不能够构成题目所要求的二叉树了.
第二个就是数据是能够对折的. 这个我晚点尝试一下.. 现在先把没折半的发一下吧.
刚刚写好了折半的,, 效率上不是特别的明显, 只是二三十毫秒的差别~~
不知道怎么解释代码,, 没别的, 看吧:
The degree of each node is 0 or 2. The degree is the count of the node's immediate children.
The height of the tree is equal to K (1 < K <100). The height is the number of nodes on the longest path from the root to any leaf; a leaf is a node with no children.
How many different possible pedigree structures are there? A pedigree is different if its tree structure differs from that of another pedigree. Output the remainder when the total number of different possible pedigrees is divided by 9901.
PROGRAM NAME: nocows
INPUT FORMAT
Line 1: Two space-separated integers, N and K.
SAMPLE INPUT (file nocows.in)
5 3
OUTPUT FORMAT
Line 1: One single integer number representing the number of possible pedigrees MODULO 9901.
SAMPLE OUTPUT (file nocows.out)
2
OUTPUT DETAILS
Two possible pedigrees have 5 nodes and height equal to 3:
@ @
/ \ / \
@ @ and @ @
/ \ / \
@ @ @ @
USACO_2.3-2:Cow Pedigrees奶牛家谱
Time Limit:1000MS Memory Limit:65536K
Total Submit:1 Accepted:1
Description
农民约翰准备购买一群新奶牛。 在这个新的奶牛群中, 每一个母亲奶牛都生两小奶牛。这些奶牛间的关系可以用二叉树来表示。这些二叉树总共有N个节点(3 <= N < 200)。这些二叉树有如下性质:
每一个节点的度是0或2。度是这个节点的孩子的数目。
树的高度等于K(1 < K < 100)。高度是从根到任何叶子的最长的路径上的节点的数目; 叶子是指没有孩子的节点。
有多少不同的家谱结构? 如果一个家谱的树结构不同于另一个的, 那么这两个家谱就是不同的。输出可能的家谱树的个数除以9901的余数。
Input
PROGRAM NAME: nocows
第1行: 两个空格分开的整数, N和K。
Output
第 1 行: 一个整数,表示可能的家谱树的个数除以9901的余数。
Sample Input
SAMPLE INPUT (file nocows.in)
5 3
Sample Output
SAMPLE OUTPUT (file nocows.out)
2
======================== 华丽的分割线 ========================
题目是看懂了,, 意思就是说用N个节点构造一个高度为K的二叉树, 且每个节点的度不能为1(即只能要么有两个儿子, 要么就没有没有孩子.), 题目我是理解了, 也清楚得很是用DP.. 但是不太会做.. DP没学好.. (自卑中)
终于吧DP返程看懂了.~!~!~! 狂High中..
f[i][j] 代表用i各节点构成最多j层的二叉树有多少种情况, 那么
f[i][j] = ∑(f[m][j-1] * f[i-1-m][j-1])(m = 1, 2, 3 ... i - 1)
m是左子树的节点个数,, 那么i - m 就是除了左子树节点个数之外的节点个数, 再除根节点, 即 i - m - 1就是右子树的节点个数..
代码能有两个优化的地方(我能够想到的只有这两个),
第一个就是在DP方程中f[i][j] 和 f[m][j] 都一定是奇数, 因为如果是偶数的话就不能够构成题目所要求的二叉树了.
第二个就是数据是能够对折的. 这个我晚点尝试一下.. 现在先把没折半的发一下吧.
/* PROG: nocows ID: zqy11001 LANG: C */ #include <stdio.h> int f[200][100]; int main(void) { int n, m; int i, j, k; freopen("nocows.in", "r", stdin); freopen("nocows.out", "w", stdout); scanf("%d%d", &n, &m); for(j = 1; j <= m; j++){ f[1][j] = 1; } for(j = 2; j <= m; j++){ for(i = 1; i <= n; i += 2){ for(k = 1; k <= i - 2; k++){ f[i][j] += f[k][j - 1] * f[i - k - 1][j - 1]; f[i][j] %= 9901; } } } printf("%d\n", (9901 + f[n][m] - f[n][m - 1]) % 9901); return 0; }
刚刚写好了折半的,, 效率上不是特别的明显, 只是二三十毫秒的差别~~
不知道怎么解释代码,, 没别的, 看吧:
/* PROG: nocows ID: zqy11001 LANG: C */ #include <stdio.h> int f[200][100]; int main(void) { int n, m; int i, j, k, c; freopen("nocows.in", "r", stdin); freopen("nocows.out", "w", stdout); scanf("%d%d", &n, &m); for(j = 1; j <= m; j++){ f[1][j] = 1; } for(j = 2; j <= m; j++){ for(i = 1; i <= n; i += 2){ for(k = 1; (k << 1) <= i - 1; k += 2){ if(k == i - k - 1){ c = 1; }else{ c = 2; } f[i][j] += c * f[k][j - 1] * f[i - k - 1][j - 1]; f[i][j] %= 9901; } } } printf("%d\n", (9901 + f[n][m] - f[n][m - 1]) % 9901); return 0; }
发表评论
-
重做 USACO 1.1 黑色星期五
2010-03-31 18:59 1295/* LANG: C ID: zqynux11 PROG ... -
重做 USACO 1.1 黑色星期五
2010-03-31 18:59 842解释什么的就算了吧,, /* LANG: C ID: ... -
重做 USACO 1.1 贪婪的送礼者
2010-03-31 18:58 1252这题的话, 我用的是个结构体, 记录各个人.. 我错了的地 ... -
重做 USACO 1.1 你的飞碟在这儿
2010-03-31 18:56 888不解释了.. /* LANG: C ID: zqynu ... -
USACO 3.1 Shaping Regions 形成的区域
2010-03-30 20:01 1537这题二话不说, 用map[i][j]表示坐标为i, j的点 ... -
USACO 3.1 Humble Numbers 丑数
2010-03-28 15:31 1487从这一题开始,, 以后题目我就不贴上来了... 自己去看吧 ... -
USACO 3.1 Score Inflation 总分
2010-03-27 20:19 842Score Inflation The more point ... -
USA 3.1 Agri-Net 最短网络
2010-03-27 20:14 885Agri-Net Russ Cox Farmer John ... -
USACO 2.4 Fractions to Decimals 分数化小数
2010-03-27 15:47 1291Fractions to Decimals Write a ... -
USACO 2.4 Bessie Come Home 回家
2010-03-27 13:01 1030Bessie Come Home Kolstad & ... -
USACO 2.4 Cow Tours 牛的旅行
2010-03-27 11:57 1127Cow Tours Farmer John has a nu ... -
USACO 2.4 Overfencing 穿越栅栏
2010-03-25 18:18 967USACO 2.4 Overfencing 穿越栅栏 Over ... -
USACO 2.4 The Tamworth Two 两只塔姆沃斯牛
2010-03-23 22:05 1221The Tamworth Two BIO '98 - Rich ... -
USACO 2.3 Controlling Companies 控制公司
2010-03-23 22:00 1471Controlling Companies Some com ... -
USACO 1.1 Broken Necklace 破碎的项链
2010-03-22 18:04 2128Broken Necklace You have a neck ... -
USACO 2.3 Money Systems 货币系统
2010-03-22 13:31 986Money Systems The cows have no ... -
USACO 2.3 Zero Sum 零的算式和
2010-03-20 14:30 1792Zero Sum Consider the sequence ... -
USACO Longest Prefix最长前缀
2010-03-17 12:28 1438Longest Prefix IOI'96 The stru ... -
vijos 谁拿了最多奖学金
2010-03-17 12:25 1106描述 Description 某校的惯例是在每 ... -
USACO 2.2 Subset Sums集合
2010-03-16 12:18 1475USACO 2.2 Subset Sums集合 For ...
相关推荐
【标题】:“usaco2.3解题报告1”涉及的知识点主要集中在动态规划和数据结构上,特别是字符串处理和二叉树。 【描述】:“usaco2.3解题报告1”描述了一个生物学背景的问题,需要计算一个大写字母序列最长的前缀可以...
USACO(美国计算机奥林匹克竞赛)是针对高中生的一项编程竞赛,旨在提高参赛者的算法设计、问题解决和编程技能。这个压缩包文件包含了USACO网站上的题目,对于准备机考和提升编程能力非常有帮助。下面我们将深入探讨...
《USACO1.4~2.3C语言题解》是针对USACO(美国计算机奥林匹克)编程竞赛中1.4至2.3阶段的题目解析,主要使用C语言进行解答。USACO旨在提升高中生的算法设计和编程能力,而C语言作为基础且高效的编程语言,常常被用于...
这个压缩包包含了USACO章节2.3到5.5的源程序,涵盖了多个阶段的学习内容。 USACO的每个章节通常会讲解一个或多个编程概念,包括基础的算法、数据结构以及更复杂的主题。让我们详细探讨这些章节可能涉及的知识点: ...
第三章涉及的题目如 "Longest Prefix"、"Cow Pedigrees" 和 "Money Systems",则可能包含字符串处理、图论和抽象数据类型,例如树和图的遍历。 第四章和第五章的题目,如 "Beef McNuggets"、"Fence Rails"、"Job ...
USACO,全称为United States阿Olympiad in Informatics,是美国计算机奥林匹克竞赛,旨在为高中生提供一个学习和展示编程技能的平台。这个比赛涵盖了算法、数据结构以及问题解决等多个方面,对于想要深入理解计算机...
USACO,全称为United States Computer Olympiad,是一项面向中学生的计算机编程竞赛,旨在提高参赛者的算法设计和问题解决能力。USACO的比赛通常分为青铜、白银、黄金和铂金四个等级,每个等级的比赛会有若干个题目...
### USACO 2010-2011 季度竞赛概览与关键信息 #### 一、概述 美国计算机奥林匹克(USACO)是面向全球中学生的计算机科学竞赛,旨在发掘并培养计算机科学领域的年轻人才。USACO 2010-2011 季度竞赛于 2010 年 11 月...
USACO,全称为United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、问题解决和编程能力。该比赛每年举行,分为青铜、白银、黄金和铂金四个级别,难度逐渐递增。...
《USACO 合集:全面解析与学习指南》 USACO,全称为USA Computing Olympiad,是一项针对中学生举办的在线编程竞赛,旨在提升参赛者的算法设计和问题解决能力。这个合集提供了丰富的资源,包括英文原题、中文译题、...
USACO,全称United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者在算法设计、问题解决以及计算机科学基础方面的技能。这个压缩包文件提供了丰富的资源,帮助参赛者或学习者更好...
【标题】"usaco traning全部数据" 涉及的是一个编程竞赛训练平台——USACO(USA Computing Olympiad)的数据集。USACO是一个专门为美国中学生设计的在线编程竞赛,旨在提升参赛者的算法设计和编程能力,特别是在解决...
USACO,全称为United States Computer Olympiad,是一项面向中学生的国际性计算机编程竞赛,旨在提升参赛者的算法设计和编程能力。USACO比赛通常使用C++语言进行,因此"USACO 1.1 c++源程序"指的是USACO入门阶段1.1...
《USACO入门指南——第一章解析》 USACO,全称USA Computing Olympiad,是美国计算机奥林匹克竞赛,旨在培养中学生在算法和编程方面的技能。对于初学者来说,USACO提供了很好的学习路径和挑战。本文将针对USACO的第...
USACO,全称United States Computer Olympiad,是美国计算机奥林匹克竞赛,是一项旨在培养青少年编程技能和算法理解的国际性比赛。这个比赛对于有志于在计算机科学领域深入发展的学生来说,具有很高的学习价值和挑战...
USACO(美国计算机奥林匹克竞赛)是面向全球中学生的一项编程竞赛,主要涉及算法和问题解决能力。这个压缩包文件“usaco历年测试数据”包含了该赛事历年的测试题目和样例输入输出数据,这对于参赛者准备比赛或者提升...
USACO,全称United States阿Olympiad in Computer Science,是美国计算机科学奥林匹克竞赛,旨在激发中学生对计算机科学的兴趣,尤其是算法和编程技能。这个"USACO全部测试数据.zip"压缩包包含了历年来USACO比赛的...
USACO(USA Computing Olympiad)是美国计算机奥林匹克竞赛,是一项面向中学生的编程竞赛,旨在提升学生的算法设计、编程和问题解决能力。该比赛通常包括训练营和一系列在线比赛,最终选拔出优秀选手代表美国参加...
USACO,全称United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、编程能力和问题解决能力。本压缩包包含了USACO比赛的题解、源代码以及对应的中文翻译,对于想要...
《USACO全部测试数据详解》 USACO,全称United States Computer Olympiad,是美国计算机奥赛,是一项旨在提升青少年计算机编程能力的竞赛。该竞赛覆盖了基础算法、数据结构、问题解决等多个计算机科学的重要领域,...