这或许是众多OIer最大的误区之一。
你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC问题,你如果不是很感兴趣就可以不看了。接下来你可以看到,把NP问题当成是 NPC问题是一个多大的错误。
还是先用几句话简单说明一下时间复杂度。时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值;而像冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度。还有一些穷举类的算法,所需时间长度成几何阶数上涨,这就是O(a^n)的指数级复杂度,甚至O(n!)的阶乘级复杂度。不会存在O(2*n^2)的复杂度,因为前面的那个“2”是系数,根本不会影响到整个程序的时间增长。同样地,O (n^3+n^2)的复杂度也就是O(n^3)的复杂度。因此,我们会说,一个O(0.01*n^3)的程序的效率比O(100*n^2)的效率低,尽管在n很小的时候,前者优于后者,但后者时间随数据规模增长得慢,最终O(n^3)的复杂度将远远超过O(n^2)。我们也说,O(n^100)的复杂度小于O(1.01^n)的复杂度。
容易看出,前面的几类复杂度被分为两种级别,其中后者的复杂度无论如何都远远大于前者:一种是O(1),O(log(n)),O(n^a)等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置;另一种是O(a^n)和O(n!)型复杂度,它是非多项式级的,其复杂度计算机往往不能承受。当我们在解决一个问题时,我们选择的算法通常都需要是多项式级的复杂度,非多项式级的复杂度需要的时间太多,往往会超时,除非是数据规模非常小。
自然地,人们会想到一个问题:会不会所有的问题都可以找到复杂度为多项式级的算法呢?很遗憾,答案是否定的。有些问题甚至根本不可能找到一个正确的算法来,这称之为“不可解问题”(Undecidable Decision Problem)。The Halting Problem就是一个著名的不可解问题,在我的Blog上有过专门的介绍和证明。再比如,输出从1到n这n个数的全排列。不管你用什么方法,你的复杂度都是阶乘级,因为你总得用阶乘级的时间打印出结果来。有人说,这样的“问题”不是一个“正规”的问题,正规的问题是让程序解决一个问题,输出一个“YES”或“NO”(这被称为判定性问题),或者一个什么什么的最优值(这被称为最优化问题)。那么,根据这个定义,我也能举出一个不大可能会有多项式级算法的问题来:Hamilton回路。问题是这样的:给你一个图,问你能否找到一条经过每个顶点一次且恰好一次(不遗漏也不重复)最后又走回来的路(满足这个条件的路径叫做Hamilton回路)。这个问题现在还没有找到多项式级的算法。事实上,这个问题就是我们后面要说的NPC问题。
下面引入P类问题的概念:如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。P是英文单词多项式的第一个字母。哪些问题是P类问题呢?通常NOI和NOIP不会出不属于P类问题的题目。我们常见到的一些信息奥赛的题目都是P问题。道理很简单,一个用穷举换来的非多项式级时间的超时程序不会涵盖任何有价值的算法。
接下来引入NP问题的概念。这个就有点难理解了,或者说容易理解错误。在这里强调(回到我竭力想澄清的误区上),NP问题不是非P类问题。NP问题是指可以在多项式的时间里验证一个解的问题。NP问题的另一个定义是,可以在多项式的时间里猜出一个解的问题。比方说,我RP很好,在程序中需要枚举时,我可以一猜一个准。现在某人拿到了一个求最短路径的问题,问从起点到终点是否有一条小于100个单位长度的路线。它根据数据画好了图,但怎么也算不出来,于是来问我:你看怎么选条路走得最少?我说,我RP很好,肯定能随便给你指条很短的路出来。然后我就胡乱画了几条线,说就这条吧。那人按我指的这条把权值加起来一看,嘿,神了,路径长度98,比100小。于是答案出来了,存在比100小的路径。别人会问他这题怎么做出来的,他就可以说,因为我找到了一个比100 小的解。在这个题中,找一个解很困难,但验证一个解很容易。验证一个解只需要O(n)的时间复杂度,也就是说我可以花O(n)的时间把我猜的路径的长度加出来。那么,只要我RP好,猜得准,我一定能在多项式的时间里解决这个问题。我猜到的方案总是最优的,不满足题意的方案也不会来骗我去选它。这就是NP问题。当然有不是NP问题的问题,即你猜到了解但是没用,因为你不能在多项式的时间里去验证它。下面我要举的例子是一个经典的例子,它指出了一个目前还没有办法在多项式的时间里验证一个解的问题。很显然,前面所说的Hamilton回路是NP问题,因为验证一条路是否恰好经过了每一个顶点非常容易。但我要把问题换成这样:试问一个图中是否不存在Hamilton回路。这样问题就没法在多项式的时间里进行验证了,因为除非你试过所有的路,否则你不敢断定它“没有Hamilton回路”。
之所以要定义NP问题,是因为通常只有NP问题才可能找到多项式的算法。我们不会指望一个连多项式地验证一个解都不行的问题存在一个解决它的多项式级的算法。相信读者很快明白,信息学中的号称最困难的问题——“NP问题”,实际上是在探讨NP问题与P类问题的关系。
很显然,所有的P类问题都是NP问题。也就是说,能多项式地解决一个问题,必然能多项式地验证一个问题的解——既然正解都出来了,验证任意给定的解也只需要比较一下就可以了。关键是,人们想知道,是否所有的NP问题都是P类问题。我们可以再用集合的观点来说明。如果把所有P类问题归为一个集合P中,把所有 NP问题划进另一个集合NP中,那么,显然有P属于NP。现在,所有对NP问题的研究都集中在一个问题上,即究竟是否有P=NP?通常所谓的“NP问题”,其实就一句话:证明或推翻P=NP。
NP问题一直都是信息学的巅峰。巅峰,意即很引人注目但难以解决。在信息学研究中,这是一个耗费了很多时间和精力也没有解决的终极问题,好比物理学中的大统一和数学中的歌德巴赫猜想等。
目前为止这个问题还“啃不动”。但是,一个总的趋势、一个大方向是有的。人们普遍认为,P=NP不成立,也就是说,多数人相信,存在至少一个不可能有多项式级复杂度的算法的NP问题。人们如此坚信P≠NP是有原因的,就是在研究NP问题的过程中找出了一类非常特殊的NP问题叫做NP-完全问题,也即所谓的 NPC问题。C是英文单词“完全”的第一个字母。正是NPC问题的存在,使人们相信P≠NP。下文将花大量篇幅介绍NPC问题,你从中可以体会到NPC问题使P=NP变得多么不可思议。
为了说明NPC问题,我们先引入一个概念——约化(Reducibility,有的资料上叫“归约”)。
简单地说,一个问题A可以约化为问题B的含义即是,可以用问题B的解法解决问题A,或者说,问题A可以“变成”问题B。《算法导论》上举了这么一个例子。比如说,现在有两个问题:求解一个一元一次方程和求解一个一元二次方程。那么我们说,前者可以约化为后者,意即知道如何解一个一元二次方程那么一定能解出一元一次方程。我们可以写出两个程序分别对应两个问题,那么我们能找到一个“规则”,按照这个规则把解一元一次方程程序的输入数据变一下,用在解一元二次方程的程序上,两个程序总能得到一样的结果。这个规则即是:两个方程的对应项系数不变,一元二次方程的二次项系数为0。按照这个规则把前一个问题转换成后一个问题,两个问题就等价了。同样地,我们可以说,Hamilton回路可以约化为TSP问题(Travelling Salesman Problem,旅行商问题):在Hamilton回路问题中,两点相连即这两点距离为0,两点不直接相连则令其距离为1,于是问题转化为在TSP问题中,是否存在一条长为0的路径。Hamilton回路存在当且仅当TSP问题中存在长为0的回路。
“问题A可约化为问题B”有一个重要的直观意义:B的时间复杂度高于或者等于A的时间复杂度。也就是说,问题A不比问题B难。这很容易理解。既然问题A能用问题B来解决,倘若B的时间复杂度比A的时间复杂度还低了,那A的算法就可以改进为B的算法,两者的时间复杂度还是相同。正如解一元二次方程比解一元一次方程难,因为解决前者的方法可以用来解决后者。
很显然,约化具有一项重要的性质:约化具有传递性。如果问题A可约化为问题B,问题B可约化为问题C,则问题A一定可约化为问题C。这个道理非常简单,就不必阐述了。
现在再来说一下约化的标准概念就不难理解了:如果能找到这样一个变化法则,对任意一个程序A的输入,都能按这个法则变换成程序B的输入,使两程序的输出相同,那么我们说,问题A可约化为问题B。
当然,我们所说的“可约化”是指的可“多项式地”约化(Polynomial-time Reducible),即变换输入的方法是能在多项式的时间里完成的。约化的过程只有用多项式的时间完成才有意义。
好了,从约化的定义中我们看到,一个问题约化为另一个问题,时间复杂度增加了,问题的应用范围也增大了。通过对某些问题的不断约化,我们能够不断寻找复杂度更高,但应用范围更广的算法来代替复杂度虽然低,但只能用于很小的一类问题的算法。再回想前面讲的P和NP问题,联想起约化的传递性,自然地,我们会想问,如果不断地约化上去,不断找到能“通吃”若干小NP问题的一个稍复杂的大NP问题,那么最后是否有可能找到一个时间复杂度最高,并且能“通吃”所有的 NP问题的这样一个超级NP问题?答案居然是肯定的。也就是说,存在这样一个NP问题,所有的NP问题都可以约化成它。换句话说,只要解决了这个问题,那么所有的NP问题都解决了。这种问题的存在难以置信,并且更加不可思议的是,这种问题不只一个,它有很多个,它是一类问题。这一类问题就是传说中的NPC 问题,也就是NP-完全问题。NPC问题的出现使整个NP问题的研究得到了飞跃式的发展。我们有理由相信,NPC问题是最复杂的问题。再次回到全文开头,我们可以看到,人们想表达一个问题不存在多项式的高效算法时应该说它“属于NPC问题”。此时,我的目的终于达到了,我已经把NP问题和NPC问题区别开了。到此为止,本文已经写了近5000字了,我佩服你还能看到这里来,同时也佩服一下自己能写到这里来。
NPC问题的定义非常简单。同时满足下面两个条件的问题就是NPC问题。首先,它得是一个NP问题;然后,所有的NP问题都可以约化到它。证明一个问题是 NPC问题也很简单。先证明它至少是一个NP问题,再证明其中一个已知的NPC问题能约化到它(由约化的传递性,则NPC问题定义的第二条也得以满足;至于第一个NPC问题是怎么来的,下文将介绍),这样就可以说它是NPC问题了。
既然所有的NP问题都能约化成NPC问题,那么只要任意一个NPC问题找到了一个多项式的算法,那么所有的NP问题都能用这个算法解决了,NP也就等于P 了。因此,给NPC找一个多项式算法太不可思议了。因此,前文才说,“正是NPC问题的存在,使人们相信P≠NP”。我们可以就此直观地理解,NPC问题目前没有多项式的有效算法,只能用指数级甚至阶乘级复杂度的搜索。
顺便讲一下NP-Hard问题。NP-Hard问题是这样一种问题,它满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广)。NP-Hard问题同样难以找到多项式的算法,但它不列入我们的研究范围,因为它不一定是NP问题。即使NPC问题发现了多项式级的算法,NP-Hard问题有可能仍然无法得到多项式级的算法。事实上,由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。
不要以为NPC问题是一纸空谈。NPC问题是存在的。确实有这么一个非常具体的问题属于NPC问题。下文即将介绍它。
下文即将介绍逻辑电路问题。这是第一个NPC问题。其它的NPC问题都是由这个问题约化而来的。因此,逻辑电路问题是NPC类问题的“鼻祖”。
逻辑电路问题是指的这样一个问题:给定一个逻辑电路,问是否存在一种输入使输出为True。
什么叫做逻辑电路呢?一个逻辑电路由若干个输入,一个输出,若干“逻辑门”和密密麻麻的线组成。看下面一例,不需要解释你马上就明白了。
┌───┐
│ 输入1├─→┐ ┌──┐
└───┘ └─→┤ │
│ or ├→─┐
┌───┐ ┌─→┤ │ │ ┌──┐
│ 输入2├─→┤ └──┘ └─→┤ │
└───┘ │ ┌─→┤AND ├──→输出
└────────┘┌→┤ │
┌───┐ ┌──┐ │ └──┘
│ 输入3├─→┤ NOT├─→────┘
└───┘ └──┘
这是个较简单的逻辑电路,当输入1、输入2、输入3分别为True、True、False或False、True、False时,输出为True。
有输出无论如何都不可能为True的逻辑电路吗?有。下面就是一个简单的例子。
┌───┐
│输入1 ├→─┐ ┌──┐
└───┘ └─→┤ │
│AND ├─→┐
┌─→┤ │ │
│ └──┘ │ ┌──┐
│ └→┤ │
┌───┐ │ │AND ├─→输出
│输入2 ├→─┤ ┌──┐ ┌→┤ │
└───┘ └→┤NOT ├→──┘ └──┘
└──┘
上面这个逻辑电路中,无论输入是什么,输出都是False。我们就说,这个逻辑电路不存在使输出为True的一组输入。
回到上文,给定一个逻辑电路,问是否存在一种输入使输出为True,这即逻辑电路问题。
逻辑电路问题属于NPC问题。这是有严格证明的。它显然属于NP问题,并且可以直接证明所有的NP问题都可以约化到它(不要以为NP问题有无穷多个将给证明造成不可逾越的困难)。证明过程相当复杂,其大概意思是说任意一个NP问题的输入和输出都可以转换成逻辑电路的输入和输出(想想计算机内部也不过是一些 0和1的运算),因此对于一个NP问题来说,问题转化为了求出满足结果为True的一个输入(即一个可行解)。
有了第一个NPC问题后,一大堆NPC问题就出现了,因为再证明一个新的NPC问题只需要将一个已知的NPC问题约化到它就行了。后来,Hamilton 回路成了NPC问题,TSP问题也成了NPC问题。现在被证明是NPC问题的有很多,任何一个找到了多项式算法的话所有的NP问题都可以完美解决了。因此说,正是因为NPC问题的存在,P=NP变得难以置信。P=NP问题还有许多有趣的东西,有待大家自己进一步的挖掘。攀登这个信息学的巅峰是我们这一代的终极目标。现在我们需要做的,至少是不要把概念弄混淆了。
Matrix67原创
转载请注明出处
信息学竞赛与其它学科的竞赛相比有其特殊性:教师在里面起的作用不大,主要靠自己通过各种渠道获取信息。我每天都会收到很多OIer发来的消息,他们迫切希望知道很多OI知识。但是,资源是有限的,即使在网络中也是。过于专业化的东西在中文网络上搜索起来并非易事。并且,OIer们所找到的东西并不一定完全可靠。不少人学习OI都是抱着一两本奥赛书或者在OIBH中搜索,但殊不知这些地方的很多东西也都不一定完全正确。两年前,我也是一个什么都不知道的 OIer。我也曾经在书店、在网络上苦苦地搜索过。因此,我知道现在OIer需要什么。我知道哪些东西OIer找不到,哪些东西普遍存在误解。我所写的东西都是我能想到的网上不太容易找到或者存在误区的问题。我想到需要写什么我就写什么,这些内容没有顺序。
现在的OI资源存在一个问题:太过于数学化、符号化。在我看来,OI的这些问题不应该是数学化的东西,不应该用数学语言去描述。OI考的是创新能力,考的是形象思维。因此,我写的这些东西最大的特点在于形象化。我决不会扔下一大堆数学式子,而是着重表达出我的形象化理解。我竭力把一个问题说清楚,让即使没有学过OI,甚至没有学过数学的人也能看懂。
我的OI生涯算是基本结束了,但OI事业并未结束。我要做的事还有很多。我打算在这一年的时间里留下更多的资料分享给今后的OIer。我不会去想这些东西被编印成册,我只是想让更多的人能从中学到东西。OI应该在互联网中生存,而互联网的基本精神是共享。在此,我只有一个要求,这些东西转载时请注明出处。说这话是有原因的,我已经发现了这个MSN Space里有些东西被没有标注来源地转帖出去了。
不知道有没有人想,Matrix67到哪里去了,怎么MSN Space也不更新了……
没有时间更新MSN Space。这10天帮我们年级搞OI去了,有点忙。讲了几天课,组织了几次考试。
所有这几天的资料(几个课件和三次考试的题目、标程和数据)都可以在这里下载:
http://www.matrix67.com/data/OI0824.rar
内部资料,已加密。密码是一个小女生的名字,所有字母大写。
上次的模拟赛搞得算是非常成功,虽然出了若干满分。不少人回帖说题出的不错,我很高兴。有人反映说题的难度适中,但梯度不够。我自己认为我的“梯度”主要不是体现在题上,而是不同规模的数据上。比如,第一题虽然不好想,但50%的数据怎么都能过吧。毕竟OI不是OJ,不要求AC,能对多少对多少。
我的计划是再搞两次类似的模拟赛,一次在国庆节(预计在10月3日),另一次在NOIP前一个星期。下面这两次的题和这次的题目差不多,也是注重考大家的算法设计,一旦算法想到了,程序可以在十几行内完成。
然后……这个MSN Space貌似更新起来已经没有多大意义了,这里的主要访客即将奔向据说有陶然居和温泉的地方。为了提高我更新的积极性,麻烦那些通过我MSN、 Vijos签名、个人主页等方式来到这里的OIer在下面留个言,申请MSN也不麻烦,还能(并且我也鼓励大家)写一个自己的Space记录每天的收获和有趣的事情。
近段时间经常收到加QQ好友的邀请,在这里我也说一下:我的QQ是188932899,但很少上(一般别指望能看到我上线);现在主要是在MSN上活动。我的MSN是matrix67@tom.com,非常欢迎交友。
关于上次的日志说的东西……我会做的,从明天开始写。
反正这段时间没有事干,决定帮大家冲刺NOIP。
这次模拟赛是在NOIP2006前的第一次模拟赛,题目全部原创,难度很小,着重考察算法设计能力。这次模拟赛之后计划至少还有两次类似的模拟赛,难度将逐渐增大。
预计MSN Space接下来要更新的五个内容是:
1. 澄清P问题、NP问题、NPC问题的概念;
2. 什么是离散化;
3. KMP字符串匹配算法;
4. König定理的证明;
5. 生成函数(在函数构造、运算和求解递推关系中的具体应用)。
买了本本了,IBM,好舒服。
前几年有一段时间没电影看,于是想起看连续剧。当然我万分排斥国产和港台的连续剧(扯过去扯过来的),还有,最讨厌的就是那些为韩剧而疯狂的小女生了。在这方面,显然美国佬做得和电影业一样强。看下几年来,貌似我已经看过近十部美剧了,今天作个总介绍,谁高三能带台DVD上山的可以考虑仔细研究一下。
美剧,就是美国佬的电视剧。他们的管理方式很强。在美国电视台,通常一个美剧会每个星期放一集(选在星期几是安排好了的),大约40分钟,时间大都在吃完晚饭的时候,时差算过来也就是我们第二天上午在上课的时候。美剧的“一部”不叫一部,叫一季(Season)。因此,美剧也不可能有“续集”的说法,只有说“第二季”、“第三季”的。一季一般有24集,通常是从年初开始放一直放到我们放暑假。也有的从9月份开始放,放12集左右的。我们放暑假时(就是现在这个时候)处于Mid-Season期间,这时一般都没电视剧看,只有一个星期两集的重播 (Encore)。一个美剧能演多少季由它的收视率决定,不少美剧会因为收视率太低而在Mid-Season里被“喀嚓”掉,下一个季度可能会被别的新剧代替。有很破的美剧演一季就没了的,也有像ER这样强的,13季。还有更强的,Law & order,90年就开始演了,演到现在已经16季了,360多集,马上9月份又要接着整。
有人想,300多集,谁看啊。其实,美剧大多数都像小日本的动画片一样,一集一个故事。这种其实最好,你漏一集也没关系,也永远不存在所谓的“大结局”之类的东西。这一类我看过的,X档案、House、Without a Trace、Numb3rs、Medium、CSI……貌似有点多。
也有一季一个故事的,24,这种最舒服,待会儿重点说。
还有一种最讨打的,一季演不完演二季,二季演不完演三季,始终演不完的。Lost是个经典例子,据传要演到第五季,最后拍个电影当大结局。还有Prison Break也是,故事看着看着就要完了的结果还是要等第二季接着整。去看Lost嘛,累死你。
依照我给美剧的排名进行介绍。
24:五季我都看完了,其中第五季是我第一次“追着”一个星期一集地看,今年上半年就是看着24过的。讲反恐的,节奏无敌紧凑(每时每刻都有事情发生,一点也不能漏),很有悬念,冲突和转折暴强,你怎么也猜不到接下来发生了什么。里面揭露了很多现实中很复杂的事情,剧里很多东西分不清好坏。剧本写得最好的是第二季。比较新颖的是整部戏始终“与现实时间同步”,也就是说电视剧里发生的事也是一分一秒地进行的(连插播广告的时间都算进去了的),相当紧张刺激。谁要看美剧的我首推24。
House:医疗剧。House是个医生的名字,他带领他的一支队伍专门处理最怪的病例。House这人很幽默,嘴皮子很贱。很多时候剧情要费一下脑子。今年9月份继续追House第三季。
Numb3rs:用数学(多半是信息学)破案。节奏相当快。搞信息的必看。
Without a Trace:寻找失踪的人,里面各种各样的事情都有。
The 4400:一季一个故事?好像是又好像不是。第一季才5集,不多,可以先看看再说。讲4400个原来神秘失踪的人突然出现,每个人都带了些超能力回来。开场动画很美,主体曲不错(我现在的手机铃声)。
Lost:来了,没完没了的剧情。讲飞机落在一个岛上,一群人在岛上活。顺带讲每个人过去的故事,每一集讲一个人的回忆。岛上有很多奇怪的事。整个剧情背后有一个相当庞大复杂的、史诗般宏大的背景等待揭穿(相信整部剧看完了还是不错的)。剧情发展相当缓慢(有时候真不想看了)。Lost的看点在于每个人的回忆有着复杂的关系,举个例子,第二季里Jack要给车祸受伤的两个人手术时选择了那个女的,结果那个男的当场死亡。那个男的就是Shannon的爸(Shannon的回忆时有说,注意那句hit by an SUV)。网上流传着许多综合了这些细节得到的描述人物关系的大图,基本上是几千乘几千的大小。为小猫默哀啊,Lost慢慢看,你这个暑假就废了。
Medium:一个灵媒人(女的)破案。每集开头都是那个女的在做梦,梦很真实,然后醒了。开场动画很有味道。
CSI:做些解剖尸体类的事重现犯罪现场,恶心的是解剖尸体的场面还有清晰特写。
Matrix67原创
转载请注明出处
如图,蓝色三角形ABC,以AC和BC为边向外作黄色正方形,作CP垂直于AB且CP=AB并依P的位置作出两个平行四边形,平移图中红色、蓝色部分后,黄色部分面积相等,建立等量关系。
这几天总算是休息够了,开始写MSN Space了。打算把上个月想写的东西今天一下子写了。
恰好遇到MSN Space大更新,名字都换了,叫Live Space。可能还有些不太习惯,不过过段时间就好了。
关于北京
上个月7号我和Zlan(还带了两个刚初中毕业的)去了一趟北京,参加一个名字叫“清北学堂”的信息学奥赛培训班。到北京基本上没什么感觉,除了满街的北京人说北京话以外,其它的和重庆没啥区别。不要以为首都北京就是完美的,其实依旧是一地的垃圾,比重庆好不到哪里去。让我不禁想到这地方怎么举办08年奥运会。估计有人不会相信这些,幸好我在北京用手机拍了一些照片来作证,以后放出来大家看。去清华北大看时感觉类似,总觉得清华北大不过如此。唯一让人感觉到想是真在北京的,只有吃着怪甜的牛肉面和到天安门时的感觉。广场很大,走得脚都酸了。后来想了一下,觉得天安门广场其实估计也没那么大,只是广场中间没什么商店之类的,让人感觉很单调,造成一种很大的错觉。
我还没拿到照片。等拿到了一定会传到相册上。
关于清北学堂
刘老大和朱全民(奥赛经典上的那个)来讲课。印象最深的是刘老大讲Voronoi图时举实例,来了句“像什么长颈鹿啊~~~”,还有朱说什么东西都要带个“巨”字。姚金宇估计大家不认识,不过那人讲了一些还不错的东西。
所谓的大牛也不过如此。OIBH的xiaokan坐在头排,整天吹USB风扇,玩极品飞车和Mario XP。他还来问了我一个问题,结果我也稀里糊涂地讲了几句,谁知他竟然说他听懂了。
见到CX(我们队的女的)了,这人把自己保护得很好,从来不给我任何入侵的机会。反正每次我看到她时她都是和别人走在一起的。把我郁闷惨了。搞到后来我竟然看到她就心跳神速,也不知是怕她了还是怎么了。
最后一天上课姚金宇迟了一个小时还没来,我一气之下回宿舍了,花了一个上午把剩下的《组合数学》看完了。这一上午或许才是我来这么一趟的最大收获。
要这几天的课件的可以来找我要。
关于ZJ
我会假设你会看我的MSN Space,因为我会看你的Q-Zone。当我知道一中的人发现了我的MSN Space后,我第一个想到的就是你。那天晚上你给我发了个QQ信息,说“嗨”,结果我没回。后来不知道你怎么了,估计你会比较郁闷。其实我没回消息是有原因的。当时在听课,我用手机上的QQ,结果因为没申请某某服务,只能收消息不能发消息。待我火速赶会电子阅览室,你却下线了。
后来我在想是什么事让你想起和我聊QQ。直到回来了我看到了你的Q-Zone才知道。你收拾东西,把我们的记忆翻了出来。看你Q-Zone上的文字,叹息你还是原来那样多愁善感。
这两年变化太大了。两年能改变很多。你还认识嘎嘎不?那个肥得流油的家伙。他竟然躲过了高三躲过了高考,考去新加坡去了,而且还没请客。对于即将去白市驿封闭的人来说,能躲过高考的人再讨打不过了。富有戏剧性的是,若干天后出现了更讨打的人。不知道你都经历了些什么。
关于绵阳
回来后没过几天就去NOI了,连更新MSN Space的时间都没有。第一次在西部搞NOI明显搞差了,虽然政府投入了大量资金。毕竟南山中学和格致一样属于远离城市的半封闭区域,买个东西都要下山去买。长虹疯起打广告,给每个寝室安了个空调不说,还组织一整天去长虹参观。结果每间寝室有空调的地方,竟然连个洗澡的地方都要抢。
关于NOI
笔试貌似才90分,丢人了。第一试第一题太淫亵了。第二题傻了,少写了一句结果少了至少50分。第三题标准算法是贪心,用动规过了70%。第二试第一题是NOI历史上头一次出现网络流,而且不好建模。第二题很有意思,提交答案类的,可以观察数据看出数据内在的规律然后作答。第三题是个数学题,概率问题,不难,证一个引理是关键。这题光荣的AC了。银牌,淫啊,淫啊。
二试回来后满街挂着祝贺NOI圆满成功类的标语。其实大家心里清楚,这届NOI不是圆满成功的。可以看到,OIBH上争议很大。两道题的数据有误,交互式的库有问题,如果不是复测的话,我估计刚好能拿个铜牌。
关于今后的打算
已经给很多人说了,这里再说一下。
帮大家搞今年NOIP帮到底,然后学开车,还想准备过四级。后两者是大家高考后的大众化思路。还有一些有闲情学乐器的人?估计只有嘎嘎了。
接下来的时间里我的MSN Space将陆续添加许多网上不容易查到的和普遍被误解的一些信息学的东西,给大家留下一些资料。讲解的文字仍然保持我以前的风格,形象化,保证所有人能看懂。
过段时间打算在Vijos搞一次NOIP模拟赛,题大致想好了。
