摘要: 还是从原来的博客转一两篇有意义的过来吧! 最近USACO写到了(第三次)1.3.3,这一题(http://zqynux.blog.163.com/blog/static/16749959720109291375436/)我用的是我自己原创的一个算法(可能也有别人想到了,但是对于我来说,确实是我自己独立思考出来的),在此发表一下。 程序:输入:一行字符串,输出:最长的回文字符的长度以及把它们给输出来。 如: 输入:1596156432111234 输出:6 432111234回文的性质 首先先把题目撇开,单说回文数的性质,如abcba是一个长度为5的回文数,那它有什么性质呢? 回文数顾名思义,. 阅读全文
posted @ 2011-06-09 18:48 zqynux 阅读(617) 评论(0) 推荐(0) 编辑
摘要: 第一节 快速排序 很久以前就学过快速排序,现在在这里简单的介绍一下吧。 快速排序是基于分治的一种排序算法,因为是分治思想的,所以它是一种非常快的算法。它的平均运行时间是O(N Log N),最坏的运行时间是O(N^2)。 算法的基本步骤如下,设S为待排序的集合,n为它的长度: 1、如果S长度(即n)为1或为0,那么立刻返回。 2、取S中任意一个元素为枢纽元。 3、将S分为两个集合:S1和S2,S1中所有元素都小于枢纽元,S2中所有元素都大于枢纽元。 4、将S1和S2分别再进行一次快速排序。 快排的思路可能有点难理解,我画几个图来说明吧。图.1-1 随机选取枢纽元图.1-2 将集合分为两个子集合 阅读全文
posted @ 2011-06-09 18:46 zqynux 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 本文章可以算是http://www.cnblogs.com/yylogo/archive/2011/06/06/SGU-106.html文章的子文章吧,剖析里面的扩展欧几里德。 首先要了解欧几里德公式。 题目里用到的定理大概有下面几个:对于等式ax+by=c,a,b,c皆为整数,c如果是gcd(a, b)的倍数,则方程有解,否则方程误解。 这一个的证明省略,我也不会。因为等式ax+by=gcd(a, b)必定有解(定理1),所以可以解出来,解法如下: 因为gcd(a, b) = gcd(b, a % b),所以有bx1+(a%b)y1=gcd(a,b),注意!此时x1并不等于x,y1也不等于. 阅读全文
posted @ 2011-06-09 15:08 zqynux 阅读(1560) 评论(0) 推荐(0) 编辑
摘要: 108. Self-numbers 2每个测试点时间限制: 2.50 sec.内存限制: 4096 KB在1949年印度的数学假D.R.Kaprekar发现了一种叫做self-number的经典数字,对于任意正整数n,定义d(n)为n加上n的各个位上的数字(d是数字的意思,Kaprekar发明的一个术语)。如:d(75) = 75 + 7 + 5 = 87。给定任意正整数n,你可以构建出无限的整数递增:n, d(n), d(d(n)), d(d(d(n))), ……举个例子,你从33开始,那么下一个数就是33 + 3 + 3 = 39, 再下一个就是39 + 3 + 9 = 51, 接着就是 阅读全文
posted @ 2011-06-09 12:31 zqynux 阅读(780) 评论(0) 推荐(0) 编辑