上一页 1 ··· 9 10 11 12 13 14 下一页
摘要: 第一节 快速排序 很久以前就学过快速排序,现在在这里简单的介绍一下吧。 快速排序是基于分治的一种排序算法,因为是分治思想的,所以它是一种非常快的算法。它的平均运行时间是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) 编辑
摘要: 想到一个好玩的,没人写一个下五子棋的程序,然后再想办法统一接口,再由某些高手来写一个管道程序(用BASH现成的也行),然后用程序和程序来比看哪个五子棋更厉害!!为了防止作弊,可能需要第三方监督程序,呵呵。忽然想到的小灵感,挺有意思的!除了五子棋各种各样的都可以咯,统一接口暂时简单的想到了几种,第一种下了一步棋之后把棋盘整个发给对方,对方就需要接受,再检查对方走的旗(毕竟是电脑走棋)是否合法,然后自己走一步,再发过去,嗯。麻烦了一点。再另外一种好一点的就是需要一个服务器程序,最好使用socket连接,然后下了棋只发送一个A5,B4之类的坐标给服务器,然后服务器把新生成的棋盘发送给另外一个客户端, 阅读全文
posted @ 2011-06-08 10:28 zqynux 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 107. 987654321 问题每个测试点时间限制: 0.75 sec.每个测试点内存限制: 4096 KB给定一个正书N,你必须得到这样的数的数目,它们的平方最后几位要等于987654321。输入:包含一个整数N (1<=N<=106)输出:打印出题目的结果样例输入8样例输出0================================华丽的分割线================================ 开始连翻译都不知道怎么翻译,感觉英文版的题目没看懂,后来到网上搜了些题解看才看题目。 算是数学的定理之类的把,一个数的平方的最后N位数只取决于那个数的最后N位数。 阅读全文
posted @ 2011-06-08 10:06 zqynux 阅读(590) 评论(0) 推荐(0) 编辑
摘要: 欧几里德公式,用来计算两个整数的最大公约数,数论中相当重要的公式,其公式为:gcd(a, b)=gcd(b, a % b)gcd(a, 0)=a反复重复第一个步骤,直至出现第二种情况。证明:a可以表示成a = kb + r,则r = a mod b假设d是a,b的一个公约数,则有d|a, d|b,而r = a - kb,因此d|r因此d是(b,a mod b)的公约数假设d 是(b,a mod b)的公约数,则d | b , d |r ,但是a = kb +r因此d也是(a,b)的公约数因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证 阅读全文
posted @ 2011-06-07 11:55 zqynux 阅读(774) 评论(0) 推荐(0) 编辑
摘要: 106. 等式时间限制:0.5s内存限制:4096KB 对于等式ax+by+c=0,给出a,b,c,x1,x2,y1,y2,你必须要确定有多少个满足下面条件的整数对(x,y)存在,x1<=x<=x2,y1<=y<=y2。输入: 包含整数a,b,c,x1,x2,y1,y2,所有数的绝对值都不大于108输出: 输出结果个数。================================华丽的分割线================================ 首先,抱歉,四天前就翻译好了,现在才上交题解!实在没办法啊,好几个原因,第一,个人好奇心太强了!扩展欧几里德算法 阅读全文
posted @ 2011-06-06 21:58 zqynux 阅读(717) 评论(0) 推荐(0) 编辑
摘要: 105. Div 3每个测试点时间: 0.50 sec.每个测试点内存: 4096 KB 给定集合1, 12, 123, 1234, ..., 12345678910, ... . 给出数字N,你必须确定这个集合前N个数据有多少个能整除3。输入:输入 N (1<=N<=231- 1).输出:题目中的个数样例输入4样例输出2================================华丽的分割线================================ SGU里难得的水题吧,简单的分析一下就可以看得到,明显的数学规律,话不多说。#include <stdio.h> 阅读全文
posted @ 2011-06-06 21:57 zqynux 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 104. Little shop of flowers每个测试点的时间: 0.5s内存限制: 4096KB问题: 你想将花店的窗户装饰到最令人舒适。你又F束花,每束花都各不相同,并且个数不少于排成一排的花瓶。花瓶被粘在架子上,并且被连续地从1编号到V,那么V就是花瓶的个数。从左到右1是最左边的花瓶,V是最右边的花瓶。花朵都是可移动的,并且都被表示成1到F。这些编号是有意义的:他们决定花和被安置在一排的花瓶的出现顺序,若i<j,则i花朵必须出现在j花朵的左边。一束杜鹃花(编号是1)一束秋海棠(编号是2)和一束康乃馨(编号是3)。现在所有的花朵必须放在花瓶中并保持他们编号上的顺序,杜鹃花放在 阅读全文
posted @ 2011-06-06 20:39 zqynux 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 103. 交通灯每个测试点:0.5s内存限制:4096KB 在Dingilville市城市交通的安排很不寻常,公路连接着路口,在两个不同的路口之间最多有一条公路连接,没有公路会连接一个路口自身。正反向通过一条道路的时间是相同的,在每一个路口都有一个交通灯,在任意时刻它要么是蓝色的要么是紫色的,这些灯的颜色是定期交换的:蓝色持续一段时间,紫色持续一段时间。当一条公路两边的交通灯颜色相同时才允许汽车离开一个路口去另一个路口。如果一辆车到达一个路口时的瞬间交通灯的颜色改变了,那就需要重新考虑新的颜色。车辆允许在一个路口进行等待。你将得到关于城市的下列信息:每条公路通过所需要的时间(整数)每一个路口两 阅读全文
posted @ 2011-06-05 21:43 zqynux 阅读(746) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 下一页