
Program Impossible
文章平均质量分 56
matrix67
这个作者很懒,什么都没留下…
展开
-
经典证明:Chaitin定理 不可能编程判断代码的最简性
今天学到一个好玩的东西。仿照停机问题的研究方法,我们可以想出很多有趣的不可解问题。Gregory Chaitin曾经提出过下面这个问题。如果两段代码运行之后能够输出相同的结果,我们就称较短的代码比长一点的那个更简洁(注意,如果程序需要读入数据,读入的数据也算进代码长度)。对于一个指定的输出,一定存在一个“最简的”代码,它是所有能输出此内容的程序代码中最短的一个。在刚刚结束的T原创 2009-02-17 23:17:00 · 1034 阅读 · 0 评论 -
一个简单而有用的数据结构
Hash表是一个很有用的数据结构,它用O(N)的空间描述一个元素在0到N-1范围内的集合,支持常数级别的添加、删除和查询。遗憾的是,Hash表不能在常数时间内批量删除元素,返回全部元素也需要O(N)的时间,而理论上说这几个操作可以做的更好。现在,你能否设计一个数据结构,它同样占用O(N)的空间,支持常数时间的添加、删除、查询、清空(删除所有元素)、势查询(返回元素个数),以及原创 2009-01-21 18:56:00 · 597 阅读 · 0 评论 -
趣题:只用赋值、自增和循环操作实现减法运算
网友Mingliang Zhu在TopLanguage上发起提问。 设想这样一个计算机系统,它只支持以下几个操作: 1. 定义变量、给变量赋值; 2. 变量自身加一; 3. 令一段语句循环执行指定的次数。 这个系统只处理且只能处理0和正整数。系统不存在“溢出”的问题。 注意这个系统没有比较运算,事实上它甚至不存在Boolean值和判断语句。原创 2008-10-22 00:37:00 · 832 阅读 · 0 评论 -
停机问题、Chaitin常数与万能证明方法
高中一次英语课上,英语老师问我们,如果你有机会乘坐时光机回到过去,你想利用这次机会来干啥。“人上一百,形形色色”这句老话得到了完美的验证。什么“回去看看四大美女”呀、“看看金字塔是怎么建造的”呀、“回到三年前的那个风雨交加的夜晚握住她的手深情地告诉她其实我不想让你离开我你知道你走了之后我有多么痛苦吗”之类的东西,各种稀奇古怪的想法都被我们说了个遍。我还记得当时我说的啥——一个原创 2008-10-12 01:45:00 · 1135 阅读 · 0 评论 -
随机洗牌:哪一种算法是正确的?
记得当年搞NOIp时,我犯过一个相当严重的错误:错误地把Floyd算法的i, j, k三层循环的位置顺序搞颠倒了。直到准备省选时我才突然意识到,Floyd算法应该最先枚举用于松驰操作的那个“中间变量”k,表示只经过从1到k的顶点的最短路;而我却一直习惯性地以为i, j, k应该顺次枚举。令人惊讶的是,这个错误跟了我那么久我居然从来都没有注意到过。后来,我发现有我这种经历的人不原创 2008-10-07 23:17:00 · 592 阅读 · 0 评论 -
来来来,讨论一下百度之星的题目
昨天的,一题滑动窗口,二题O(n^3)的DP。三题是二维线段树? 大家说得对,三题用线段树套平衡树显然更简单、更科学。四题显然应该是先二分k,关键是怎么检验?我的做法是枚举交点Pi,枚举圆Cj(Pi不在Cj上),然后找出Cj上的所有交点所能产生的弦的中点与Pi的连线的中点,对它们进行检验。如果是三个圆交成一个空心的“瘪三角形”区域的话,画画草图就能明白我这样做的理由,关键是圆多了的原创 2008-06-01 18:40:00 · 773 阅读 · 0 评论 -
记08年北大ACM选拔赛
早晨7:40的闹铃。到36楼下面见到了我的两个队友后,随便吃了点东西就出发了。 计算中心门前特别热闹,N多人围在一张大桌子前,好像是在签到。我挤进去找了半天发现没我的名字,名单上全是信科的人。我抬头问,中文的在哪儿呢。一个美女姐姐用手指了远处的一个几乎没人的地方说“中文的在那边”,并说了一句“哇,中文的呀,太牛B了”。我顺着她手指的方向望过去,另一张小桌子前面贴了“中原创 2008-05-11 18:13:00 · 640 阅读 · 0 评论 -
有趣的C语言问题 测试你对C语言的熟悉程度
下面这个程序输出什么?enum {false,true};int main(){ int i=1; do { printf("%d/n",i); i++; if(i continue; }wh原创 2008-02-03 21:35:00 · 895 阅读 · 0 评论 -
又是一年NOIp时 祝本站所有网友RP++
大家加油啊,我等着你们的好消息原创 2007-11-16 00:58:00 · 498 阅读 · 0 评论 -
趣题:Anagram辅助程序的数据结构
Anagram是一个比较流行的英文文字游戏,本Blog之前曾经介绍过,这里我再提一下。Anagram就是把一个词或者一句话里的字母重新排列,组成一个新的单词或句子,通常前后两者有一种讽刺的意味。比如,Dormitory = Dirty Room,或者Desperation = A Rope Ends It。创作一个有意思的Anagram并不是一件容易的事,你很可能需要计算机的原创 2007-11-03 15:54:00 · 620 阅读 · 0 评论 -
Google面试题中的两道趣题
看看下面两道题,它的解答非常简单,即使没学过信息学的人也可以想到答案。你能在多短的时间内想出问题的算法来?一小时?一分钟?一秒钟?1. 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。2. 给你一个数组A[1..n],请你在O(n)的时间里构原创 2007-10-22 13:31:00 · 688 阅读 · 0 评论 -
推荐网页:一大堆的Computer Science Puzzle
http://www.ocf.berkeley.edu/~wwu/riddles/cs.shtml一些很另类的信息学问题,比如:用常数空间线性时间找链表中的一个环,只用NAND实现XOR门,不用乘法和加法把一个数乘以7,常数时间无附加空间交换两变量,写一个输出自己代码的程序,用n + O(log n)次比较查找第二小的元素,写一个程序用C编译时输出“C”而用C++编译时输出“C++”原创 2007-10-18 15:07:00 · 513 阅读 · 0 评论 -
Retargeting:经典动态规划问题的一个出人意料的应用
计算机的图片处理技术已经越来越牛B了,很多看似不可能的东西现在都已经有了比较成熟的算法,比如无锯齿放大、抠图、智能抹除等等。但你相信吗,现在竟然有这样一种算法,它可以改变图片的长宽比,同时保持画面内容的长宽比不变! 我们经常遇到这样一个问题:源图片的长宽比与目标长宽不合,把图片剪裁一部分会觉得可惜,而拉伸图片后画面内容就变形了。此时,一种叫做Retargeting的技术原创 2007-10-14 20:24:00 · 723 阅读 · 0 评论 -
07年NOIp模拟赛by Matrix67 定于10月5日上午8:30-11:30进行
常见问题解答 Q: 这次题目的难度如何? A: 这次题目面向广大即将参赛的NOIp选手,难度与NOIp相当。 Q: 我想参加这次模拟赛。我需要如何报名? A: 你不需要报名。你只需要在比赛结束之前按要求提交你的源程序即可。 Q: 届时可以在哪里看到本次比赛的题目? A: 10月5日早上8:30,比赛的题目将在我的个人Blog(http://www.matrix67.com原创 2007-09-28 21:44:00 · 607 阅读 · 0 评论 -
帮忙宣传:MM群2007七夕邀请赛
“All cattle but MM”群计划在8月19日晚上举办模拟赛,详细的比赛信息在这里。ddeggzmc找到我说,OIBH挂了后大家接收消息比较困难,想到我这里来“借一下人气”。把这个小blog说得很火的样子,让我很是高兴;又想到自己也曾是这个群的成员(从不上QQ,被踢出来了),因此帮忙宣传一下。 比赛信息中提到,组织者是一个“不愿透露姓名的在幕后默默工作的PLM原创 2007-08-11 21:21:00 · 529 阅读 · 0 评论 -
noi.cn消息:IOI2007同期将举行网上同步赛
第十九届国际信息学奥林匹克(IOI2007)将于2007年8月15-22日在克罗地亚首都萨格勒布举行,同期将举行网上同步赛。IOI2007网上同步赛为信息学爱好者们提供了一个与世界各国计算机高手交流的好机会,希望有兴趣的同学踊跃参加。 竞赛时间:第一竞赛日8月17日、第二竞赛日8月19日,网上同步赛比正式赛晚1小时举行,当地时间为上午9:30,我国时间约在下午15:30原创 2007-08-11 00:00:00 · 681 阅读 · 0 评论 -
神奇的分形艺术(三):Sierpinski三角形
在所有的分形图形中,Sierpinski三角形可能是大家最熟悉的了,因为它在OI题目中经常出现,OJ上的题目和省选题目中都有它的身影。这篇文章将简单介绍Sierpinski三角形的几个惊人性质。如果你以前就对Sierpinski三角形有一些了解,这篇文章带给你的震撼将更大,因为你会发现Sierpinski三角形竟然还有这些用途。Sierpinski三角形的构造原创 2007-08-08 07:59:00 · 1512 阅读 · 0 评论 -
花了我五秒钟才反应过来,笑死我了~~~
3x12=362x12=241x12=120x12=18原创 2007-08-06 13:54:00 · 547 阅读 · 0 评论 -
第300篇日志:祝福所有NOI选手
Bless All NOIers...现在大家差不多该上路了吧,祝大家考前一路顺利,考场上超常发挥,评测时RP++,最后满载而归!现在闲的厉害,不知道大家报名前或考完后有没有自发组织什么活动的,有的话我想过来玩玩,瞻仰一下各位大牛刚才没事看了一下NOI笔试题,有些题目笑死我了……原创 2007-07-25 00:31:00 · 504 阅读 · 0 评论 -
又是黑色星期五!为什么总是黑色星期五呢?
你是否还记得,今年的4月13日是黑色星期五。短短三个月后,黑色星期五再次现身!为什么这一天老是出现呢? 恐怕心理原因是最好的解释。人们对黑色星期五的出现记忆更深刻,给人一种黑色星期五常常出现的错觉。有趣的是,仔细算一算,你会发现13日是星期五的次数真的要多一些。 很多人以为现在实行的历法是4年一循环,这是不对的。现在实行的历法以400年为一个循环。大家很容易忽略整原创 2007-07-13 00:26:00 · 975 阅读 · 0 评论 -
C语言速成手册(五):其它运算符、文件操作、其它函数
条件运算符 条件运算符的格式如下:表达式1 ? 表达式2 : 表达式3 它表示:若表达式1为真(非0),则返回表达式2,否则返回表达式3。 下面的函数返回两个数中较小的一个:long min( long a, long b){ return (a} 很多地方都可能用到条件运算符。再比如求平均数时你可能会这样写:average = (n>0) ? sum/n原创 2007-06-17 07:05:00 · 768 阅读 · 0 评论 -
C语言速成手册(三):数组、字符串、结构
一维数组的定义、初始化和使用 定义一个一维数组的格式如下:类型 数组名[数组大小]; 数组的下标范围总是从0开始(因此下标最大为数组大小减一)。下面一行语句定义了一个大小为10的长整型数组:long value[10]; 这相当于下面的Pascal语句:var value:array[0..9]of longint; C语言的数组范围左端点不能自定义,它的数组原创 2007-06-08 02:03:00 · 1048 阅读 · 0 评论 -
Matrix67生日邀请赛顺利结束 题目内容在此发布
07年5月12日晚我举办了一次OI生日邀请赛,比赛已经顺利结束。下面是这次比赛的全部试题:题目一览题目名称 为什么最少 身高控制计划 狼的复仇 和MM逛花园题目类型 传统 传统 传统 传统源文件名称 whyleast.(pas/原创 2007-05-12 00:02:00 · 920 阅读 · 0 评论 -
本菜鸟下个月拟举办生日邀请赛
注:这篇日志是4月份写的,“下个月”指的07年5月 下个月的16号就是本菜鸟的生日了,为了庆祝一下自己19岁生日,我计划在5月12日(星期六)晚举办一次生日邀请赛,请各位OIer赏脸。题目差不多想好了,先在这里发布一下消息。4道题3个半小时,到时候题目就在这里发布(OIBH上也会发布一份),仍然采用电子邮件提交,邮箱还是那两个:gs.matrix67@gmail.com,和ma原创 2007-04-26 16:56:00 · 553 阅读 · 0 评论 -
从零开始学算法:十种排序算法介绍(下)
那么,有什么方法可以不用比较就能排出顺序呢?借助Hash表的思想,多数人都能想出这样一种排序算法来。 我们假设给出的数字都在一定范围中,那么我们就可以开一个范围相同的数组,记录这个数字是否出现过。由于数字有可能有重复,因此Hash表的概念需要扩展,我们需要把数组类型改成整型,用来表示每个数出现的次数。 看这样一个例子,假如我们要对数列3 1 4 1 5 9 2 6原创 2007-04-13 04:09:00 · 635 阅读 · 0 评论 -
从零开始学算法:十种排序算法介绍(中)
本文被华丽的分割线分为了四段。对于O(nlogn)的排序算法,我们详细介绍归并排序并证明归并排序的时间复杂度,然后简单介绍堆排序,之后给出快速排序的基本思想和复杂度证明。最后我们将证明,O(nlogn)在理论上已经达到了最优。学过OI的人一般都学过这些很基础的东西,大多数OIer们不必看了。为了保持系列文章的完整性,我还是花时间写了一下。 首先考虑一个简单的问题:如何在原创 2007-04-06 13:52:00 · 705 阅读 · 0 评论 -
终于AC了:用BrainFuck语言过SPOJ测试题
SPOJ的多语言确实很牛,竟然连WhiteSpace语言也支持(很早就听说过这种语言,它的代码仅仅包含空格、Tab和回车三个字符,其余字符一律不认)。今天,我在提交语言的列表里看到了另一个叫brainf**k的语言,顿时来了兴趣。 brainf**k=BrainFuck。如果哪天我发明一种语言叫“太他妈的牛逼了”,矜持一点的OJ也会称呼它“太XXX牛B语言”。这种语言原创 2007-04-02 20:22:00 · 1004 阅读 · 0 评论 -
从零开始学算法:十种排序算法介绍(上)
今天我正式开始按照我的目录写我的OI心得了。我要把我所有学到的OI知识传给以后千千万万的OIer。以前写过的一些东西不重复写了,但我最后将会重新整理,使之成为一个完整的教程。 按照我的目录,讲任何东西之前我都会先介绍时间复杂度的相关知识,以后动不动就会扯到这个东西。这个已经写过了,你可以在这里看到那篇又臭又长的文章。在讲排序算法的过程中,我们将始终围绕时间复杂度的内容进原创 2007-03-31 23:23:00 · 665 阅读 · 0 评论 -
非传统题型练习:三道交互式题目
Problem 1: famous 谁是名人题目来源:Matrix67根据经典问题改编 题目和测试库源码直接见http://www.matrix67.com/blog/article.asp?id=179题解: 显然名人最多有一个。问两个还没有问过的人A和B。如果A认识B,那么A肯定不是名人;如果A不认识B,那么B肯定不是名人。总之,结果无论是什么,总有一个人要排除。由于原创 2007-03-09 22:16:00 · 1638 阅读 · 0 评论 -
07年重庆队选拔赛试题 非官方题解 by Matrix67
题目在这里:http://www.matrix67.com/blog/article.asp?id=186 第一题是老题了,到处都有,连Vijos上居然也找到了一个(VOJ1214)。 一个O( sqrt(k) )的方法是先算前面sqrt(k)个值,然后剩下的部分除出来的商会出现大段大段相等的情况(这些商的值从sqrt(k)一直变到0,因此最多有sqrt(k)段),每一段原创 2007-03-04 21:26:00 · 866 阅读 · 0 评论 -
用Cena评测答案提交类题目的另类方法
这几天组织了几次省选模拟赛,遇到了答案提交类的题目和交互式的题目。我一直使用Cena进行评测,现在希望把这两种类型的题目方便地加入Cena的评测结果中。交互式的题目使用Cena评测非常简单,只需要在库函数运行时输出一个以得分情况为内容的文件作为选手输出即可(http://www.matrix67.com/blog/article.asp?id=179)。但答案提交类的题目却遇原创 2007-02-11 20:50:00 · 1509 阅读 · 1 评论 -
什么是P问题、NP问题和NPC问题
这或许是众多OIer最大的误区之一。 你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什原创 2006-08-28 22:58:00 · 3006 阅读 · 2 评论 -
我为什么要写这些?
信息学竞赛与其它学科的竞赛相比有其特殊性:教师在里面起的作用不大,主要靠自己通过各种渠道获取信息。我每天都会收到很多OIer发来的消息,他们迫切希望知道很多OI知识。但是,资源是有限的,即使在网络中也是。过于专业化的东西在中文网络上搜索起来并非易事。并且,OIer们所找到的东西并不一定完全可靠。不少人学习OI都是抱着一两本奥赛书或者在OIBH中搜索,但殊不知这些地方的很多东西原创 2006-08-28 22:52:00 · 493 阅读 · 0 评论 -
无题 于2006年8月24日
不知道有没有人想,Matrix67到哪里去了,怎么MSN Space也不更新了…… 没有时间更新MSN Space。这10天帮我们年级搞OI去了,有点忙。讲了几天课,组织了几次考试。 所有这几天的资料(几个课件和三次考试的题目、标程和数据)都可以在这里下载: http://www.matrix67.com/data/OI0824.rar 内部资料,已加原创 2006-08-24 19:08:00 · 489 阅读 · 0 评论 -
考前乱猜题
奖学金scholar 校长决定给n个人发奖学金,要求考试分数越高得的奖学金越多,且各人得的奖学金各不相同。已知总奖学金数,如果所发的奖学金都为整数,求考试分数最低的人得的奖学金最多可以有多少。 输入:n个人的考试分数 输出:考试分数最低的人得的奖学金的最大值。 河流river 小明画了一张自家附近的河流的地图(有向图),其中一条河流的流向画反了,请找出这条流向错误原创 2005-11-16 22:12:00 · 626 阅读 · 0 评论 -
聆听排序算法的声音
在网上偶然看到这篇文章,决定把之前创作排序算法内存状态演示图所用的Mathematica程序修改一下,于是搞出来5个midi音乐。这些midi文件用音高来表示内存状态,初始时的音都是乱的,然后声音渐渐变得有序,最后就成了从低到高的一串音符。http://www.matrix67.com/data/bubble_8_elements.midhttp://www.matrix67.c原创 2009-08-18 22:09:00 · 635 阅读 · 0 评论 -
(召集)你能想到的最奇妙的算法题是什么?
昨天和老朋友BY一起吃饭时又一次不可避免地谈到了算法问题。一个有趣的话题是:提起那些最巧妙的、最离奇的牛B算法时,你想到的第一个算法题是什么? 我第一想到的算法题是那道经典问题:n个数中有且仅有一个数出现了奇数次(其它数都出现了偶数次),如何用线性时间常数空间找出这个数。解法也只有一句话:从头到尾异或一遍,结果就是要求的那个数。该问题的加强版也异常牛B,我曾经在这里介原创 2009-05-10 12:25:00 · 647 阅读 · 0 评论 -
趣题:理想模型下的排序算法(下)
上次我们谈到,我们考虑时间复杂度时往往假设任意大的整数运算(赋值、四则运算、取余运算、比较运算、位运算包括左移右移)都可以在常数时间内完成,殊不知这留下了一个非常具有研究价值的漏洞:能否利用计算机理想模型中的整数运算,把问题打包成超大整数后并行计算,从而办到一些在普通计算机上无法办到的事情?我们在上一次的文章中介绍了利用“大整数随便算”的漏洞“耍赖”得到了一个线性时间的排序算原创 2009-03-06 17:32:00 · 713 阅读 · 0 评论 -
TLE比赛结束 经典题目回顾
创意C/C++编程挑战赛Time Limit Exceeded结束,题目果然非常有创意。大家可以在这里看到比赛题目和获胜选手的代码。其中两道题很有意思,我特别喜欢。 一道叫做Compile Error的题目要求你写一个叫做multiply的类,里面包含一个mult(int a,int b)的函数,该函数用于打印出a和b的乘积。代码中不允许出现空格、“/”和“#defi原创 2009-02-16 21:27:00 · 683 阅读 · 0 评论 -
比比谁的代码短:TLE测试赛结束
上次提到,我非常关注一个即将举办的另类编程挑战赛Time Limit Exceeded,这个比赛的得分算法很另类,它将根据你代码的总长度和特定字符的多少而定。在刚刚结束的测试赛中,有几个题目非常具有挑战性,参赛者提交的代码也是牛气冲天。 Power of 2问题: 输入数据含有多行,每行一个正整数。对每个数,检查看它是否是2的幂,是则输出yes,不是则输出no。原创 2009-02-10 04:03:00 · 503 阅读 · 0 评论