跳至正文

[未完成]USACO 1.4.1 Prime Cryptarithm

  • OI路程

  这是这一次做USACO目前唯一一个没做完的题目!第六种情况实在是不知道怎么写,我觉得最好还是不写最好,所以就没去写了。我也尝试了一下自己试着写写,结果写了最后一种情况竟然还不如不写的分数高!但是自己实在是不知道为什么,以前的代码这三行(最后一种情况)也是抄的,不是理解的,所以现在也就忘了……
  我的思路就是暴搜,用srch0将所用的矩形换位置,srch1将所有的矩阵的长宽交换,然后用count进行判断,代码十分易读(以前别人写的,不过因为确实有特色,所以已经变成了自己的东西了。)
  总结一下错误:

  1、把re[……]

继续阅读

USACO 1.3.4 Prime Cryptarithm

  • OI路程

  我没找到什么很巧的方法,纯暴力搜索:
  枚举100~999,10~99然后再分别进行判断,是各个数值否是在范围内,然后是否是输入输入的集合,如果都是ans递增,代码就是这样,犯了两个错误!
  1、在比较是否属于全集时,我是判断如果都不属于才算不属于,即用的“与”进行连接,应用“或”连接,在有一个不属于全集时就算不属于了。
  2、在判断是否是千位数时我用的是i >= 999,应该用i>999。
  不过都是打代码就发现的问题,所以一次性AC!

/
ID: yylogoo2
PROG: crypt1
LANG:[……]

继续阅读

算法: 求最长的回文

  • 技术

  最近USACO写到了(第三次)1.3.3,这一题(http://zqynux.blog.163.com/blog/static/16749959720109291375436/)我用的是我自己原创的一个算法(可能也有别人想到了,但是对于我来说,确实是我自己独立思考出来的),在此发表一下。
  程序:输入:一行字符串,输出:最长的回文字符的长度以及把它们给输出来。
  如:

    输入:1596156432111234
    输出:6
       432111234
回文的性质
  首先先把题目撇开,单说回文数的性质,如[……]

继续阅读

USACO 1.3.3 Calf Flac

  • OI路程

  这一题是USACO所有题目中我最自豪的一个题目,首先因为大部分人的代码都是在小数后一位上,而我这个算法是O(n)的,所以非常的快。又因为这是我自己想出来的,而且思维角度比较独特,所以我甚为自豪!
  但是我这个思路很难表达清晰。
  想把它单独提出来作为一篇文章(http://zqynux.blog.163.com/blog/static/1674995972010929683892/)写,包裹题解也在左边的链接里面,写好了把链接贴上来。
  这里我犯的几个错误分别如下:

  1、在比较不同字母时没注意大小写的区分。
 [……]

继续阅读

USACO 1.3.2 Barn Repair

  • OI路程

  这一题想了好久才想起来以前是怎么做的,直接使用的贪心,首先假设只有一块木板,自然而然是从最小的到最大的全部盖上,此时假设值为ans,那么如果是两块木板,那两块木板之间隔的距离必定是整个牛棚中距离最远的两个牛之间的距离,也就是说答案等于:只有一块木板的长度减去一个最长间隔:ans-max(dis),那三块木板的话很自然就是只有一块木板的长度减去最长的前两个间隔的值,以此类推,代码就很简单了。
  但是又由于需要快排的实现,我嫌它麻烦了,就直接使用数组进行排序(这个排序方法准确叫什么名字我也忘了,不记得是基数还是桶还[……]

继续阅读

USACO 1.3.1 Mixing Milk

  • OI路程

  这题是个纯贪心题,本来是打算使用快排的,想到考试时可能不允许使用快排,自己写又太麻烦了,所以我就懒得用快排了,题目的数据量也不是很大,直接使用数组进行排序就是!
  当然没有什么明显的问题,一次AC,代码如下:

/
LANG: C
ID: yylogoo2
PROG: milk
/
#include <stdio.h>
unsigned milk[1001];

int main(void)
{
        i[……]

继续阅读

USACO 1.2.5 Dual Palindromes

  • OI路程

  本来应该是很简单的一个题目,因为昨天才写前面一题(USACO 1.2.4 Palindromic Squares),就是使用那里写的一些子函数即可AC,但是因为现在是以学习为目的,所以自然是重写一次,但是重写同样的两个函数,却出现了不应该有的错误,具体错误如下:

  1、在循环之后忘记更改循环变量了,就是说比如:for(i = 0; i <= 10; / 相当于这里没写 / ),自然循环就无法结束了!
  2、在数组里面直接使用长度作为下表,又比如:char str[10] = "12345&quo[……]

继续阅读

USACO 1.2.4 Palindromic Squares

  • OI路程

  这题硬搜就是,不过在提交前找到两个mistack:

  1、没审清楚题目,题目只要求平方是回文数,而没有要求那个数自身也是个回文数,我以为那个数自身也是回文数。
  2、在转换进制的时候,犯了一个超级低级的错误,把进制顺着使用了,也就是说比如13的二进制是:1101,而我的程序做出来就是1011,弄翻了!当然,很快就改好了,提交,一次性AC!
/
LANG:
C
ID: yylogoo1
PROG:
palsquare
/
#include <stdio.h>
#define MAP
"0123456789[……]

继续阅读

USACO 1.2.3 Name That Number

  • OI路程

  这题我用的方法就是将dict.txt中的每一个字符串读出来,并判断是否满足输入的那个数字,如果满足输出就是。
  我还有另外一个算法,就是首先根据输入的数字来确定范围,然后逐步缩小,最后确定到个数,但是很快就发现这是(我)无法实现的高难度算法。
  再一个,我上面的那个算法要注意的是数的长度,最长是12位的数字!int存不进,必须要用long long!
  代码如下:

/
LANG: C
ID: yylogoo1
PROG: namenum
/
#include <stdio.h>
#include&nbs[……]

继续阅读

USACO 1.2.2 Transformations

  • OI路程

  这题没什么别的巧,就是硬搜,我犯的唯一一个错误就是使用了strcmp来进行判断,但是又没有给字符串设置结尾标识’\0’,幸运的是我在提交前查出来了,所以还是一次性提交成功,哈哈 !代码如下:

/
LANG:
C
ID: logoo2
PROG:
transform
/
#include <stdio.h>
#include
<string.h>
typedef struct{
        char ma[……]

继续阅读