
USACO
戏局人生
这个作者很懒,什么都没留下…
展开
-
USACO Section 1.1.1 Your Ride Is Here
简单题目,分别将两个字符窜中的字母通过asic码转换为数字,带权加和就可以了,别看简单,但是也有陷阱!首先,作为乘法运算,结果对47取余,自然不会溢出,但是中间结果还是有可能溢出的,多以要注意对中间结果进行取余处理!/*ID: zhuihun1PROG: rideLANG: C++*/#include #include #include #include原创 2013-07-23 09:06:59 · 817 阅读 · 0 评论 -
USACO Section 1.2.4 Palindromic Squares
既然是各种进制,那就写个函数解决进制转换的问题吧,相信这个不难吧,但应该注意的是大于10的进制应该有字母出现的,多以多处理一步吧我写的进制转换的函数名字是jinzhi(),有两个参数,第一个是要转换的数,第二个是要转换成哪种进制的,返回的是字符串,应为转换过后的那个数用十进制表示很可能溢出(事实上肯定会溢出)既然有回文判断,那就写个函数判断是不是回文就好了,简单!下面的步骤就好办了原创 2013-07-23 10:06:59 · 695 阅读 · 0 评论 -
USACO Section 1.3.4 Prime Cryptarithm
这道题很容易想成全排列的问题,那就会变得非常麻烦,而且难以解决我们可以换一种思路,从算式出发,那么那个算式无非就100000中情况,我们只要找到符合给定要求的种类就行了那就变得很简单了,注意这个算式有很多的隐藏条件,需要你去发现下面给出代码/*ID: zhuihun1PROG: crypt1LANG: C++*/#include #include #include原创 2013-07-23 10:48:07 · 796 阅读 · 0 评论 -
USACO Section 1.3.3 Calf Flac
字符串处理的比较麻烦的题目,最难的地方就是要输出原文.这道题目首先要预处理一下,把不是字母的全部去掉,再变成大写字母(为了便于比较),存到一个string的变量里面,原文保存到时候要注意用一行一行的读,而这个函数是不包括换行符'\n'的,所以自己别忘了手动加上为了提高效率,我们的回文函数用的是从中间往两边扩散的方法进行处理的,回文有两种形式,一种是奇回文,另一种是偶回文都要进行判断原创 2013-07-23 10:40:47 · 776 阅读 · 0 评论 -
USACO Section 1.3.2 Barn Repair
要使长度最小,那么就要用尽量多的木板,但不是要将给的木板全部用完! 这样就能保证最小长度,在木板充足的情况下,最小长度就是有牛的牛棚的个数,在不充足的情况下就可以换种思路来想问题了反正是不够用了,那么就会出现空当,那么这个空当的空越大,用的木板的就越少,我们首先把有牛的棚子用一块木板堵上然后依次往下减去最大的空当就可了,至于减去多少个,根据给定的最多的木板个数判断一下就行了原创 2013-07-23 10:31:33 · 619 阅读 · 0 评论 -
USACO Section 1.3.1 Mixing Milk
简单题,贪心,不多说/*ID: zhuihun1PROG: milkLANG: C++*/#include #include #include #include #include#define MAXSIZE 20using namespace std;struct Farmer{ int price; int amount;};int need原创 2013-07-23 10:19:25 · 655 阅读 · 0 评论 -
USACO Section 1.2.5 Dual Palindromes
又是进制转换的问题,不过有了上一道题的基础,这道题目就简单多了,首先我们有了转换成各种进制的函数,也有了判断回文的函数其他的按照题目叙述来做就好了,不多说,看不懂请到上一道题目中找答案/*ID: zhuihun1PROG: dualpalLANG: C++*/#include #include #include using namespace std;string jin原创 2013-07-23 10:10:51 · 547 阅读 · 0 评论 -
USACO Section 1.2.3 Name That Number
首先应该解决一个数字对应多个字母的问题,我采用的是二位数组,每一行代表的是每一个数字,每一行所对应的列是这个数字所对应的字母,这样解决了数字与字母的对应问题,后面的 思路就是对一组数字如4374 ,记录字典里的每一个单词的命中次数,所谓命中就是第一个数字所代表的字母跟这个单词的第一个字母是一样的,那么我们就成这个单词命中了.那么,如果这个单词命中的次数等于这个单词的长度,即全部命中,那原创 2013-07-23 09:58:41 · 670 阅读 · 0 评论 -
USACO Section 1.2.2 Transformations
矩阵转换,简单题目,每一次比较没有必要真正的转换方阵,而是只要比较转换后的每个元素的位置,对应到原图的位置,并与目标方阵的标准位置比较就好,说的很绕口,也很难说清楚,看代码吧还要注意一点 能用1转换的,就不能用其他的,优先级不一样/*ID: zhuihun1PROG: transformLANG: C++*/#include #include #include原创 2013-07-23 09:43:18 · 603 阅读 · 0 评论 -
USACO Section 1.2.1 Milking Cows
首先还是排序,比较重要先按开始时间排,如果相同,再按结束时间排序用两个变量分别记录最长的连续时间的起始时间,满足条件就更新这两个值/*ID: zhuihun1PROG: milk2LANG: C++*/#include #include #include #include #includeusing namespace std;struct Farmer{原创 2013-07-23 09:34:44 · 546 阅读 · 0 评论 -
USACO Section 1.1.4 Broken Necklace
这道题目主要有两种做法,一种是对取余,对项链循环判断,另一种是把两个相同的项链连接起来,这样就由环变成了线性问题我采用的是第一种方法,中间取余比较麻烦,还容易出错,如果这个项链是同一种颜色,容易死循环,需要手动break,建议使用第二种方法/*ID: zhuihun1PROG: beadsLANG: C++*/#include #include #include #原创 2013-07-23 09:28:45 · 599 阅读 · 0 评论 -
USACO Section 1.1.2 Greedy Gift Givers
不多说,简单题,比较重要的是要找到是哪个人送的礼物,送给了谁,给了多少注意处理一下除数为0的情况,否则会出错/*ID: zhuihun1PROG: gift1LANG: C++*/#include #include #include using namespace std;struct Persion{ string name; int in;原创 2013-07-23 09:10:51 · 854 阅读 · 0 评论 -
USACO Section 1.1.3 Friday the Thirteenth
黑色星期五属于取余的稍微难点的题目,比较简单的思路就是一个月一个月的推算每个月的13号是星期几,即1月份的13号由上一年的12月的13号和上一年12月的天数推出2月份的13号有今年的1月分的13号和今年的1月份的天数推出3月份的13号由今年的2月份的13号和今年的2月份的天数推出....................以此类推就可以了,只要注意一下今年的2月份的天数就可以了注意原创 2013-07-23 09:19:05 · 625 阅读 · 0 评论