
USACO
nay_nix2
世间总有星辰开道
展开
-
USACO-Section 1.2 Milking Cows[数组模拟]
这道题的基本想法就是,利用数组模拟。开一个布尔型的标记数组,若标记值为true,表明这个时间是至少有一头牛是出于被喂奶的状态的。在输入每个农名的时间段的时候,可以用memset方法直接填充那个时间段。输入完成做个统计就行。/* ID: 13913351 LANG: C++ PROG: milk2 */ #include<iostream> #include<string.h> #include<fs原创 2017-05-24 16:24:57 · 322 阅读 · 0 评论 -
USACO section 1.3 Wormholes
这个题目我首先考虑的是如何配对的问题。 我的想法是,先给所有点按输入次序编号。然后开一个数组来记录配对问题。利用深搜枚举出所有情况。 之后就是,对每一组配对结果的测试。我的想法就是,粗暴的模拟一下他的行走过程,设定一个阈值。当你经过各个虫洞点的数量已经超过阈值时,就算你卡住了。阈值的设定就是根据感觉来的。。。。/* ID: 13913351 LANG: C++ TASK:wormhole */原创 2017-06-07 20:18:40 · 349 阅读 · 0 评论 -
Greedy Gift Givers
最简单直接又粗暴的方法。。。慢慢成长/* ID: 13913351 LANG: C PROG: gift1 */ #include<stdio.h> #include<string.h> #define N 11 char s[N][20]; //存储人名 int sum[N]; //存钱罐 char giv[20]; //送礼人 char rec[20]; //接受礼物的人 i原创 2017-05-21 10:24:01 · 221 阅读 · 0 评论 -
Friday the Thirteenth
USACO成长笔记,不急,慢慢来嘛/* ID: 13913351 LANG: C PROG: friday */ #include<stdio.h> #include<string.h> int week[7]; int main() { FILE *fin = fopen ("friday.in", "r"); FILE *fout = fopen ("friday.out",原创 2017-05-21 10:21:21 · 236 阅读 · 0 评论 -
USACO section 1.3 Combination Lock
这个程序也主要分为三个部分,一个是全排列函数,两个测试函数。 全排列用来模拟密码,第一个测试函数是用来剪枝的,当你模拟出来的当前密码数字不符合要求时后续操作就完全没有必要进行,直接减掉。还有一个就是测试结果是佛符合条件。/* ID: 13913351 LANG: C++ TASK:combo */ #include<iostream> #include<fstream> #include<cmat原创 2017-06-05 15:17:04 · 295 阅读 · 0 评论 -
USACO section 1.3 Prime Cryptarithm
这个程序主要分三步: 第一步:全排列,由于只需要五个数,所以排到第五个数就停止,没有进行什么剪枝操作,因为时间完全是允许的 第二步:计算并保存需要检测的值,手动写公式。。。没什么技术含量 第三步:将需要的结果挨个检测一下,符合万事大吉,不符合就江湖再见。/* ID: 13913351 LANG: C++ TASK: crypt1 */ #include<iostream> #include<f原创 2017-06-05 15:05:03 · 268 阅读 · 0 评论 -
USACO section1.3 Barn Repair
这题的主要思路:用数组模拟牛棚,有牛置1,否则置0。 一共有M个木板拦牛,木板从第一个有牛的棚拦起,到最后一个有牛的棚停止。我们只需要从这个区间找到M-1个连续的没有牛的区间,然后减掉它就是答案。/* ID: 13913351 LANG: C++ TASK: barn1 */ #include<iostream> #include<fstream> #include<algorithm> #inc原创 2017-06-05 14:39:53 · 254 阅读 · 0 评论 -
USACO section 1.3 Mixing Milk[贪心算法]
这题的意思就是每个农名提供一定数量的牛奶,不同的农名牛奶单价不一样,现在需要收购一定数量的牛奶怎样才能花费最少? 这题说是用贪心算法,其实没那么多花花心思。就是根据单价给他们排序,从最便宜的开始买。方便排序的话,可以用一个结构体表示农名牛奶的单价以及他能提供的数量。/* ID: 13913351 LANG: C++ PROG: milk */ #include<iostream> #include原创 2017-05-26 16:37:37 · 325 阅读 · 0 评论 -
USACO section 1.2 Dual Palindromes
这个就是简单的进制转换加回文判断,其他方面的逻辑自己控制一下就好。/* ID: 13913351 LANG: C TASK:dualpal */ #include<stdio.h> #include<string.h> char num[21]={"0123456789ABCDEFGHIJ"}; void shift(int m,int n,char res[32]) { int k=0;原创 2017-05-26 15:39:37 · 232 阅读 · 0 评论 -
USACO Section 1.2 Palindromic Squares
这题就是简单的把从1到300的数用给定B进制表示一下,再把他的平方也表示一下,如果平方的B进制表示是回文数的话,就输出这个数还有他的平方的B进制表示。 代码如下:/* ID: 13913351 LANG: C TASK:palsquare */ #include<stdio.h> #include<string.h> char num[21]={"0123456789ABCDEFGHIJ"}; v原创 2017-05-24 20:25:13 · 240 阅读 · 0 评论 -
USACO Section 1.2 Name That Number(全排列)
这题就是根据编号与字母的对应表找出符合条件的名字。 很明显这题如果排列出所有的可能,再与字典进行对比,肯定会超时。 所以肯定需要剪枝。 一开始,我是用一个数组记住26个字母作为首字母第一次出现在字典中位置(因为字典是按字典序排列的),这样来减少每次遍历的次数,但是这样依然会超时。 然后,我就在排列过程中判断,如果已经排列好的字符串不是字典中任何一个名字的子串,就不继续排列,直接剪枝,通过这个原创 2017-05-24 20:07:24 · 268 阅读 · 0 评论 -
USACO Section1.2 Transformations
这个题目就是有七种操作让你选择,前四个操作是元操作,第五个操作是基于前四个来的,第六个判不变就行,若前面六个都不可以就输出7。 这个就是实现一下前面四个操作,然后判断一下,第五个就组合判断一下就成。具体代码如下:/* ID: 13913351 LANG: C++ TASK: transform */ #include<iostream> #include<fstream> #include<cst原创 2017-05-24 18:32:55 · 275 阅读 · 0 评论 -
USACO section 1.3 Ski Course Design
这个先说一个比较简单直接的方法,由于山的最高高度有限,题目要求任意两座山的高度差不超过17。由于数字不大,可以枚举出所有1~100长度为17的区间,计算将山的高度移到每一个区间需要的最小花费,再进行比较得到最终的最小花费。 我的方法是,用一个结构体表示一座山,数据成员有山当前的高度,还有山继续变化1m的花费。山的初始高度由题目给定,初始花费为1。 整体思路就是,将山的高度进行排序,当山的最高高度原创 2017-06-07 20:50:30 · 413 阅读 · 0 评论