自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (6)
  • 收藏
  • 关注

原创 【啊哈!算法】算法12:堆——神奇的优先队列(下)

接着上一Pa说。就是如何建立这个堆呢。可以从空的堆开始,然后依次往堆中插入每一个元素,直到所有数都被插入(转移到堆中为止)。因为插入第i个元素的所用的时间是O(log i),所以插入所有元素的整体时间复杂度是O(NlogN),代码如下。n=0;for(i=1;i){ n++; h[ n]=a[ i]; //或者写成scanf("%d",&h[ n]);

2014-06-17 09:35:55 4057 1

原创 【啊哈!算法】算法11:堆——神奇的优先队列(上)

堆是什么?是一种特殊的完全二叉树,就像下面这棵树一样。        有没有发现这棵二叉树有一个特点,就是所有父结点都比子结点要小(注意:圆圈里面的数是值,圆圈上面的数是这个结点的编号,此规定仅适用于本节)。符合这样特点的完全二叉树我们称为最小堆。反之,如果所有父结点都比子结点要大,这样的完全二叉树称为最大堆。那这一特性究竟有什么用呢?        假如有14个数分别是9

2014-06-12 11:28:10 2434

原创 【啊哈!算法】算法10:二叉树

二叉树是一种特殊的树。二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多有两棵子树。更加严格的递归定义是:二叉树要么为空,要么由根结点、左子树和右子树组成,而左子树和右子树分别是一棵二叉树。 下面这棵树就是一棵二叉树。         二叉树的使用范围最广,一棵多叉树也可以转化为二叉树,因此我们将着重讲解二叉树。二叉树中还有连两

2014-05-21 11:48:29 2435

原创 【啊哈!算法】算法9:开启树之旅

这是什么?是一个图?不对,确切的说这是一棵树。这哪里像树呢?不要着急我们来变换一下。       是不是很像一棵倒挂的树,也就是说它是根朝上,而叶子朝下的。不像?哈哈,看完下面这幅图你就会觉得像啦。       你可能会问:树和图有什么区别?这个称之为树的东西貌似和无向图差不多嘛。不要着急,继续往下看。树其实就是不包含回路的连通无向图。你可能还是无法

2014-05-21 11:45:30 2340

原创 【啊哈!算法】算法8:巧妙的邻接表(数组实现)

之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M。对于稀疏图来说,M要远远小于N2。先上数据,如下。 4 51 4 94 3 81 2 52 4 61 3 7         第一行两个整数n m。n表示顶点个数(顶点编号为1~n),m表示边的条数。接下来m行

2014-04-10 15:17:07 3650 3

原创 【啊哈!算法】系列7:Dijkstra最短路算法

上周我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”。本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”。例如求下图中的1号顶点到2、3、4、5、6号顶点的最短路径。       与Floyd-Warshall算法一样这里仍然使用二维数组e来存储顶点之间边的关系,初始值如下。

2014-04-01 10:24:06 5305 3

原创 【啊哈!算法】算法6:只有五行的Floyd最短路算法

暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。        上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问

2014-03-25 09:40:23 4582 1

原创 【啊哈!算法】算法5:解密回文——栈

上一节中我们学习了队列,它是一种先进先出的数据结构。还有一种是后进先出的数据结构它叫做栈。栈限定只能在一端进行插入和删除操作。比如说有一个小桶,小桶的直径只能放一个小球,我们现在向小桶内依次放入2号、1号、3号小球。假如你现在需要拿出2号小球,那就必须先将3号小球拿出,再拿出1号小球,最后才能将2号小球拿出来。在刚才取小球的过程中,我们最先放进去的小球最后才能拿出来,而最后放进去的小球却可以最先拿

2014-03-17 10:46:57 2555

原创 【啊哈!算法】算法4:队列——解密QQ号

新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾,再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一

2014-03-10 10:45:06 5097 6

原创 【啊哈!算法】算法3:八一八“快速排序”

上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2)。假如我们的计算机每秒钟可以运行10亿次,那么对1亿个数进行排序,桶排序则只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人。那有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。

2014-03-05 11:55:27 4482 2

转载 为什么鼠标(箭头)光标是不对称的?

c3a246a21b773312a8f66a32c7155e60.png (212.45 KB, 下载次数: 21)下载附件  保存到相册2014-2-22 12:20 上传在上图中,蓝线是光标箭头的中心线,绿线是光标柄的中心线。很多处女座的网友已经在问了,为什么鼠标光标不对称?果壳网友“因为如果设计成柄の中心对称,那

2014-03-05 11:50:27 3619

原创 C语言走迷宫源代码

C语言走迷宫源代码#include #include #include int main(){  char a[50][50]={"######",                  "#O # ",                  "# ## #",                  "# # #",                  "## #",     

2014-03-05 11:49:06 13342 1

转载 NOI知识点

2014-03-05 11:43:48 2453 1

转载 一天半夜,一个人在马上走遇到了警察叔叔

一天半夜,一个人在马上走遇到了警察叔叔。警察叔叔问他int占用几个字节?这个人说4个。警察叔叔说:“你可以走了”。这个人问为什么?警察叔叔说:“这个点出来的只有两种人,小偷和程序员。”

2014-03-05 11:43:14 1639

原创 图论:一个叫做SPFA的东西(C语言代码实现)

spfa.png (23.94 KB, 下载次数: 2)下载附件  保存到相册2013-2-20 20:58 上传输入样例:5 71 2 21 5 102 3 32 5 73 4 44 5 55 3 6输出样例:0 2 5 9 9代码1(使用了边集数组!):/* Author: Hahahu

2014-03-05 11:34:46 4336 1

原创 一个叫做LIS(最长不下降子序列)的东西

输入数据:102 8 10 1 5 1 7 8 6 5输出数据:4代码:// Author: Ahalei// Date: 11 1, 2010// City: Wuhan// Website: www.ahalei.com// Title: LIS (Longest Increasing Subsequence)#include "stdio.h"

2014-03-05 11:26:36 1798 1

原创 这个的东西zhen有趣LCS(最长公共子序列)

样例输入:55 6 4 3 966 3 9 5 6 9样例输出:3代码:// Author: Ahalei// Date: 11 1, 2010// City: Wuhan// Website: www.ahalei.com// Title: LCS (Longest Common Subsequence)#include "s

2014-03-05 11:19:33 1541

原创 话说NOIP一些会考到的算法

码子画图不容易欢迎转载,转载请标明出处http://blog.csdn.net/ahalei/article/details/20533559

2014-03-05 11:14:32 4151 1

原创 不要嫁给你不爱的人——趣谈如何选学校和选专业

近来咨询如何选学校和专业的朋友较多。整理出来供大家参考。个人观点,好与不好一看笑之。我是计算机专业的,因此以计算机专业作为例子说下选专业和学校需要注意的问题。其它专业也可对照此法。首先谈专业。必须要选一门自己很感兴趣的专业,如果去读了一个不喜欢专业,就好比你和一个你不爱的人结婚了,然后这样你们要共度四年难关(这其中不但有N多考试,还有N多竞赛

2014-03-05 11:08:59 1539

转载 Will Scott:我在朝鲜教计算机的故事

原文出处: KYLE RUSSELL   译文出处: 咕噜网Will Scott是一名华盛顿大学计算机科学系毕业生,也曾在谷歌工作过一段时间。去年秋天,他独自前往朝鲜,在平壤科技大学教授操作系统和数据库课程。在此期间,他用图片记录了自己在朝鲜的生活,好让人们对朝鲜有了更深的了解。以下便是Will Scott在朝鲜拍摄的一些照片,这些内容收集于他的Instagra

2014-03-05 11:07:48 1871

转载 15种排序算法可视化展示

演示的链接http://v.youku.com/v_show/id_XNjIwNTEzMTA0/v.swf.html

2014-03-04 10:03:10 3577

原创 啊哈!算法——排序算法总结:小哼买书

之前讲了三种常用的经典排序。排序算法还有很多,例如选择排序、计数排序、基数排序、插入排序、归并排序和堆排序等等。堆排序是基于二叉树的排序,以后再说吧。        先来看一个具体的例子《小哼买书》来看看三个排序在应用上的区别和局限性。 小哼的学校要建立一个图书角,老师派小哼去找一些同学做调查,看看同学们都喜欢读哪些书。小哼让每个同学写出一个自己最想读的书的ISBN号(你知道吗?每

2014-03-04 09:57:04 2472

原创 【啊哈!算法】算法2:冒泡排序

简化版的桶排序不仅仅有上一节所遗留的问题,更要命的是:它非常浪费空间!例如需要排序数的范围是0~2100000000之间,那你则需要申请2100000001个变量,也就是说要写成int a[2100000001]。因为我们需要用2100000001个“桶”来存储0~2100000000之间每一个数出现的次数。即便只给你5个数进行排序(例如这5个数是1,1912345678,2100000000,1

2014-03-04 09:45:33 3758 1

原创 【啊哈!算法】算法1:最快最简单的排序——桶排序

最快最简单的排序——桶排序   在我们生活的这个世界中到处都是被排序过的。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。    首先出场的我们的主人公小哼,上面这个可爱的娃就是啦。期末考试完了老师要将同

2014-02-24 15:27:48 5358 1

最近5年NOIP初赛CSP第一轮比赛常考题目讲义

最近5年NOIP初赛CSP第一轮讲义.pdf 常考知识点总结,图、树、二叉树、组合数学、常识题、数据的存储等

2020-11-08

CSP第二轮和NOIP比赛注意事项

CSP第二轮和NOIP比赛注意事项.using namespace std; 引用了之后,变量名不能和std命名空间的变量 名冲突,例如time next index max min count end find power 等(全局变量)。 Windows下编译器不报错,在Linux下报错。 y1在C++11标准库中被定义了

2020-11-08

2020 CSP-S2 提高级第二轮试题( 原noip提高组复赛)

2020 年 CCF 非专业级软件能力认证 提高级第二轮 为了简便计算,天文学家们使用儒略日(Julian day)来表达时间。所谓儒 略日,其定义为从公元前 4713 年 1 月 1 日正午 12 点到此后某一时刻间所经过 的天数,不满一天者用小数表达。若利用这一天文学历法,则每一个时刻都将 被均匀的映射到数轴上,从而得以很方便的计算它们的差值。 现在,给定一个不含小数部分的儒略日,请你帮忙计算出该儒略日(一定 是某一天的中午 12 点)所对应的公历日期。 我们现行的公历为格里高利历(Gregorian calendar),它是在公元 1582 年 由教皇格里 2020 CCF CSP-S2

2020-11-08

2020 CSP-J2 入门组第二轮试题( 原noip普及组复赛)

2020 CSP-J2 入门组第二轮试题( 原noip普及组复赛)一般来说,一个正整数可以拆分成若干个正整数的和。例如,1 = 1,10 = 1 + 2 + 3 + 4 等。 对于正整数 n 的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆 分下,n被分解为了若干个不同的 2 的正整数次幂。注意,一个数 x能被表 示成 2 的正整数次幂,当且仅当x能通过正整数个 2 相乘在一起得到。

2020-11-07

啊哈C语言(坐在马桶上都能读懂的编程入门书)

小学生坐在马桶上都能读懂的C语言编程入门书。超萌超简单的C语言入门。

2014-03-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除