![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Algorithm in USACO
文章平均质量分 65
xxmpp
这个作者很懒,什么都没留下…
展开
-
Problem 108 Your Ride Is Here
先来个最简单的,也是USACO的第一个问题。Story就不复述啦,和程序没什么关系。输入文件有两行字符串,全部都是大写字母,不用考虑非法输入(比如夹杂数字等)。字母对应到数字分别从1-26,即,A=1,B=2,。。。,Z=26。转换好以后,把它们分别乘起来除以47取模,如果两行结果相等,输出GO,否则输出STAY。char到int的转换对学过c的朋友来说再简单不过了,ASCII代码有现成的映射,做原创 2005-04-22 19:32:00 · 1274 阅读 · 0 评论 -
Problem 24 Barn Repair
有一排牛棚,其中某些有牛有些没有,每个棚宽度相同,要求用不超过规定的木板数覆盖最少的牛棚,前提当然是有牛的棚都要覆盖啦。很典型的贪心问题,反过来想比较容易,要覆盖最少,也就是空出最多。这样算法就很清楚了,从第一个被占据的牛棚开始数,到最后一个被占据的牛棚为止,找出所有的空牛棚,把它们排序,删掉最长的那些就ok了。#include #include using namespace std;int c原创 2005-06-12 12:44:00 · 1049 阅读 · 0 评论 -
Problem 76 Mixing Milk
牛奶厂向农民买牛奶,每天需要买N个单位的牛奶,现有M个农民(奶民?),求最便宜的买法,假设农民提供的总量一定比N大。这个问题也是很标准的贪心问题,把农民按价格排序,买够为止。这里数据结构用的是map,因为map会自动排序,嘿嘿。不过小心map没有重复key,而农民的价格可能会重复。注:贪心算法通常无论思路、代码都很简单,但贪心算法在很多情况下都是不正确的(或者说都不能得到最优解)。如果能证明贪心法原创 2005-06-12 16:10:00 · 960 阅读 · 0 评论 -
Problem 6 Superprime Rib
又是素数的问题,“超级”素数指的是型如这样的整数:7331,其中前缀7,73,733,以及自身7331都是素数。给定一个n,找到所有n位的“超级”素数。n的范围是1-8。8位数是千万级,穷举是不现实的。根据superprime的性质,很容易想到自己构造这样的数字。首先观察一下每个位上的数字。对于一个n位数,除了首位,其他位置上都不会出现偶数和数字5,否则就不是素数了。首位上,2显然是可以出现的,但原创 2005-06-13 15:15:00 · 1201 阅读 · 0 评论 -
Problem 45 What Time Is It
这个问题是要求把数字形式的时间转换成文字形式的。所有的regulation都给出了,编码的时候小心一点考虑全面就是了。#include #include #include using namespace std;int main(){ string exp; int hr, min; char dump; ifstream fin("clock.in"); fin>>hr>>dump>>min原创 2005-06-12 12:48:00 · 909 阅读 · 0 评论 -
Intro
USACOgate是美国佬给他们的中学生准备的一个培训网站,旨在培养对竞赛有兴趣的学生。不过不管什么地方的人都是可以用的啦。5年前第一次玩这个的时候,为了它几乎废寝忘食。但不幸一次硬盘崩溃,报销了我所有的文档。现在忙里偷闲回顾一下,发现自己居然对这些题目还记忆犹新,写点心得出来share一下,我对算法不在行,大学里也只是过关了事。USACO是激起我对algorithmic programming兴原创 2005-04-22 15:41:00 · 785 阅读 · 0 评论 -
Problem 95 Prime Palindromes
这个问题非常有趣,回文素数在数论里也占有一席之地,成为Palindromic Prime,或简写为Palprime。题目的规模比之前的三道一下跳了n个数量级,达到100,000,000。不过因为只是在这个范围内做搜寻,所以并不用担心int的表示范围。但是,一亿还是很大的数字,一个个检测显然不现实,要想办法把范围缩小。首先,除了2,所有的素数都是奇数,而题目范围从5开始……Oh yeah,一下就干掉原创 2005-04-26 12:34:00 · 1281 阅读 · 1 评论 -
Problem 77 Greedy Gift Givers
和Problem 108一样,Rob简化了这个问题,去掉了BT的测试数据,把问题限定在很小的范围之内,最多10个人,人名不超过14个字母,礼物价值在2000以内,不过这也OK啦,和Problem 108不同,前两个值对整个问题没有什么影响,就算用BT数据,也只是小把戏而已(因为不可能修改人名,弄个长达几十万个字母的名字一点意义都没有,除了增加保存的难度,和算法无关,不是USACO的宗旨,而且要是用原创 2005-04-23 14:26:00 · 1379 阅读 · 1 评论 -
Problem 99 Broken Necklace
这个题目是标准的complete search,350的长度,即使一个个数过去代价也是很小的。完全不必考虑任何优化。analysis的方法和我差不多,但写的非常elegant,很优雅地处理了向前向后的方向问题(用了一个额外的mod函数),以及全白项链的问题。当初完全没想到整个项链都是白色的话怎么办,致使我的方法会陷入一个infinite loop。考虑问题不全面啊#include #include原创 2005-04-24 16:38:00 · 1197 阅读 · 0 评论 -
Problem 29 Name That Number
这又是一个简单的全搜索,给出一个数字,每个数字可以对应3个字母,象这样: 2: A,B,C 3: D,E,F 4: G,H,I 等等。。。再给一个字典,找到这个数字所有的可能性以后再查字典,选出字典里有的词,输出。字典由usaco给出,差不多4千多个词。最直观的方法就是构建所有的组合,再去查字典。构建的花样不多,查字典的时候小心效率。由于字典是有序的,两分法应该是最好的。或者反过来原创 2006-01-24 01:17:00 · 1076 阅读 · 0 评论