USACO_3_2_Stringsobits
摘要:这道题不错,NOCOW上面已经有很详细的解答,就不再废话多了。 提示:通过集合的大小来求集合中第i大的元素[代码]
阅读全文
posted @
2009-01-21 15:36
刘永辉
阅读(489)
推荐(0)
USACO_3_2_Factorials
摘要:参考了NOCOW上面的解释。 这道题利用到因式分解,注意到每一个整数仅有一种因式分解方法,所以如果这个整数是10的倍数的话,那么因子中必然至少有一对2和5。那么如果把N!的因子中所有2和5一对一对地去掉,直到剩下2而没有5时(2总比5多),剩余因子的乘积个位数必然不为0,要求这剩余部分因子乘积的个位可以在对10取模的运算下进行。即为所求。 [代码]
阅读全文
posted @
2009-01-17 18:29
刘永辉
阅读(294)
推荐(0)
USACO_3_1_Stamps
摘要:我们面临的基本问题是“邮资为m时可否用少于等于k张邮票来组成”,这是一个yes or no的特殊化问题,它所对应的一般化问题为“组成邮资为m时至少需要多少张邮票”,如果解决了一般化问题则特殊化问题就容易知道了。(想问题时,如果遇到了一个特殊化问题就同时去想想对应的一般化问题,同样,如果遇到一般化问题也同时想想对应的特殊化问题。) 下面简单对̶...
阅读全文
posted @
2009-01-17 15:17
刘永辉
阅读(371)
推荐(0)
USACO_3_1_Contact
摘要:这道题,主要求一个序列中各个子序列出现的次数,子序列的长度在a到b之间,并且按照一定规则输出,为了简化问题的讨论,我们只考虑求出子序列的出现次数,而不考虑相关的输出问题。 我首先想到的最简单的方法莫过于用一个字典来保存所有的pattern,考虑每一个pattern,如果字典中不包含此pattern,则把它加入字典,并设置出现了1次,以后如果遇到相同的pattern则从字典中取出来把它的出现次数增加...
阅读全文
posted @
2009-01-16 21:36
刘永辉
阅读(585)
推荐(0)
USACO_3_1_Shaping Regions
摘要:做一个矩形类,然后模拟放的过程,不过从最后放的矩形开始反序考虑 比如题目给出的样例,一开始放入颜色4的矩形,得到4与1相交部分,然后无论前面的矩形怎么放这一部分的颜色都是4,此时把其余颜色为1的部分分解为3个小矩形 然后再考虑放下颜色3的矩形,考虑剩余的白色矩形(颜色1),把每一个与3相交的做同样处理,即先把相交部分涂成颜色3,把这个白色矩形的其它部分分解为多个小矩形 直到放入第一个矩形为止 代码...
阅读全文
posted @
2009-01-09 13:47
刘永辉
阅读(547)
推荐(0)
USACO_3_1_Humble Numbers
摘要:参考官方题解,用一个数组humbles记下找到的humble数,当第i-1个已经知道需要找到第i个时,用集合中的每一个素数去乘找到的humble数,找出比humbles[i-1]大中最小的一个就是humbles[i] 为了提高效率,用一个数组multiplyIndex来记录每个素数乘到了humbles中的第几个数,这样效率减小到O(k * n) Code Code highlighting...
阅读全文
posted @
2008-12-31 14:43
刘永辉
阅读(421)
推荐(0)
USACO_3_1_Score Inflation
摘要:基本的动态规划题目,如果不会做的话参考下面两篇文章: 通过金矿模型介绍动态规划 USACO_2_3_Money Systems 我的java代码提交了好多次才通过,读取文件的速度太慢,哪个知道怎么才能快速的从文件中读取一堆整数? Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://...
阅读全文
posted @
2008-12-29 17:14
刘永辉
阅读(299)
推荐(0)
USACO_3_1_Agri-Net
摘要:这倒题考你最小生成树算法,我参考了算法导论上的Kruskal算法,读者在网上查查 Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**//* ID: sdjllyh1 PROG: agrinet LANG: JAVA complete...
阅读全文
posted @
2008-12-28 19:28
刘永辉
阅读(310)
推荐(0)
USACO_2_4_Fractions to Decimals
摘要:一个简单的模拟题目,不过要小心括号的位置,做一点提示,用一个数组来记录每个余数出现的位置,如果出现了相同的余数那就发现了循环,上一次出现的地方就是左括号的位置,因为是模拟题,不建议看我的代码,所以就不写注释了 Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighte...
阅读全文
posted @
2008-12-25 22:42
刘永辉
阅读(276)
推荐(0)
USACO_2_4_Bessie Come Home
摘要:没什么特别的,最短路径算法,用Floyd是为了简单 Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**//* ID: sdjllyh1 PROG: comehome LANG: JAVA complete date: 2008/12/...
阅读全文
posted @
2008-12-25 19:50
刘永辉
阅读(278)
推荐(0)
USACO_2_4_Cow Tours
摘要:这道题需要用到Floyd最短路径算法来求每对点之间的最短路径。 定义一个概念----半径。在求出每对点之间的最短路径后,用radius[i]来表示所有i可达的点j中,i到j的最短路径最大值。 当我们在A片区(一些互相可达的点组成一个片区)中的点a与B片区中的点b之间修一条路后,这个新片区的直径就是以下三个值的和: 1、a点的半径。 2、b点的半径。 3、这条新路的长度,即a与b...
阅读全文
posted @
2008-12-24 15:22
刘永辉
阅读(681)
推荐(0)
USACO_2_4_Overfencing
摘要:使用广度优先所搜,用distance[i][j]表示点(i,j)到最近出口的距离 对于题目给出的数据,一开始(2,1)(2,4)的distance为1{从(0,0)开始计算},其它点的distance都为一个比较大的值,且把这两个点加入“搜索点集合”中 不断的从“搜索点集合”中“拿出”一个点,当这个点的distance+1小于它旁边的另一个点的distance时,就跟新另一个点的dista...
阅读全文
posted @
2008-12-21 16:56
刘永辉
阅读(256)
推荐(0)
USACO_2_4_The Tamworth Two
摘要:很简单的模拟题目,代码有注释 Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**//* ID: sdjllyh1 PROG: ttwo LANG: JAVA complete date: 2008/12/21 author: Li...
阅读全文
posted @
2008-12-21 14:26
刘永辉
阅读(226)
推荐(0)
USACO_2_3_Controlling Companies
摘要:感觉这倒题没有出好,比如数据: 3 1 2 30 1 3 30 2 1 30 2 3 30 3 1 30 3 2 30 公司1到底控制了2、3没有?可以说控制了,也可以说没有,但题目意思是没有控制。 看了nocow上的解答才发现原来就是一个简单的模拟题,大家去nocow看吧: NOCOW上关于Controlling Companies的解答 我的代码是参考usaco答案的 Code...
阅读全文
posted @
2008-12-20 14:42
刘永辉
阅读(400)
推荐(0)
USACO_2_3_Money Systems
摘要:又是动态规划,又是动规方程,但是如果你是准备参加noip的选手的话请不要错过这篇解说,因为这倒题虽然简单,但有很大的启发性,因此我准备详细的通过三个代码来讲解这道题。 首先我会引导读者如何去思考这道题的动规方法,通过一个时间效率为O(v*n*n)、空间效率为O(V*n)的简单方法,让读者理解程序的正确性。 然后我将改变一下思考的角度,介绍一个时间效率为O(v*n)、空间效率为O(v*n)的...
阅读全文
posted @
2008-12-18 16:19
刘永辉
阅读(761)
推荐(2)
USACO_2_3_Zero Sum
摘要:一个一个的穷举吧,在填充符号的时候按照‘ ’、‘+’、‘-’的顺序填充就是题目要求的所谓的“ASCII order” Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**//* ID: sdjllyh1 PROG: zerosum LA...
阅读全文
posted @
2008-12-18 14:15
刘永辉
阅读(263)
推荐(0)
USACO_2_3_Cow Pedigrees
摘要:这是一个动态规划的题目,明确一下题目的意思:用N个点组成一棵深度为K的二叉树,求一共有几种方法? 一开始我以为可以有好几颗树,其实只能有一棵。 简单给出转移方程: 设possibleNumber[i][j]表示给定i个节点能够得到的深度小于等于j的树的种数 那么有possibleNumber[i][j] = S(possibleNumber[k][j-1] * possibleNumb...
阅读全文
posted @
2008-12-17 14:54
刘永辉
阅读(379)
推荐(0)
USACO_2_3_Longest Prefix
摘要:我用动态规划,下面主要讲一下怎么去思考这个题。 在我的《通过金矿模型介绍动态规划》一文中我提到思考动态规划可以分为9个步骤,其实这9步中第一步是最重要的,就是如何模拟这个过程。 拿到这道题的时候,我们可以这样想,假如我有一张条纸,上面写了一个串s,我需要从前面开始剪掉一个前缀,但是每次剪下来的子串都必须是P集合中的元素,我需要知道剪掉的前缀最长可以有多长。 现在来思考问题的最后一步。如...
阅读全文
posted @
2008-12-16 15:51
刘永辉
阅读(397)
推荐(0)
USACO_2_2_Party Lamps
摘要:没什么特别的方法,c的大小不会影响到效率,最多仅有8种结果,我写了一个configuration类,每个configuration就是一种可能的结果 Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**//* ID: sdjllyh1 ...
阅读全文
posted @
2008-12-15 14:45
刘永辉
阅读(313)
推荐(0)
USACO_2_2_Runaround Numbers
摘要:没有用到什么特别的方法,从M+1开始一个一个的枚举 Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**//* ID: sdjllyh1 PROG: runround LANG: JAVA complete date: 2008/1...
阅读全文
posted @
2008-12-15 14:38
刘永辉
阅读(261)
推荐(0)