欢迎辞

欢迎来到“笃志以砺,决起而飞”!
如果您是第一次来到本站,建议访问本站导读以便更快地了解本站。
如果您喜欢本站,欢迎订阅

 

2012 年二月
« 一  
 12345
6789101112
13141516171819
20212223242526
272829 

链表结构原理 与 数组模拟链表 的应用

链表(chain table)是我们最常使用的一种数据结构。在信息学竞赛中,经常需要使用链表作为遍历等操作使用的数据结构参与解题过程。这是因为链表具有自己的优点。用数组模拟链表,可以简化链表的使用,从而使链表更好的为我们服务。如果您已经知道链表数据结构的原理,可以跳过第一部分直接查看与数组模拟链表有关的内容。

[...]

周记,何去何从?

据小道消息,持续了两年的周记制度面临终结。我在想,周记给我带来了什么,它又是否值得去写。

首先,周记极大地丰富了每个人的素材库。不仅是直接抄记所得的各类事例,也有自己在周记中所写各类原创文章提供的行文思想、可利用的作文片段、精彩论点等。它还为每个人细心观察生活提供了很好的记载空间。回顾两年的周记史,绝大多数星期,我都写有至少一篇原创作品。

其次,周记能够维护或发展每个人的文化意识。对于整天泡在理科题海之间的我们来说,周记提供了一个平台,使我们每个人都能暂时脱离理性,总结思想,观察、思考生活,放飞理想,或者静下心来,写一篇短文,甚至与老师直接交流。我们可以谈古论今,评头论足,而不用想着一堆堆难证明的数学题。它让我们意识到,世界不仅有数字,世界还有诗。

再次,周记给予了我们一种全面和及时的总结语文学习、积累文化知识的方式。试想如果高中三年认真记录,在高考前,它就是一本全面的语文知识手册,包括了从第一题字音开始到作文结束的几乎每道题都能用得上的补错纠错、文化积累、作文素材、综合素养的信息,我相信即使自己上了大学,甚至参加工作之后,再次翻开它仍会唏嘘不已。

坐在教室,写着周记,心中有一种静,心中在培养一种净。写着写着,心中油然而生一种敬,而由此使人奋发去竞。

周记,何去何从?

第一届机房病毒杯NOIP提高组模拟赛试题+题解

现在距离第一届机房病毒杯的举行(2008年11月9日)已经过去了将近一年的时间。我也顺利获得了当年的NOIP一等奖,现在我以文化课作为主要努力方向。

为了更好的造福广大OIer,我决定逐渐公开和整理一些OI资料,于是就从《第一届机房病毒杯NOIP提高组模拟赛》开始吧。因为这是第一届(或许是最后一届?)我自己主办的NOIP比赛,所以具有一定的纪念意义。值得说明的是,当初这届比赛就是为了模拟NOIP,所以难度很低。

[...]

POI 9904 Polygons 解题报告

本解题报告非本人原创,程序为本人原创。转载请注明出处并保留本注释。 题目描述 Polygons 两个做游戏的人在玩一种多边形游戏。一个有n个顶点的凸多边形需要由 n-3条对角线划分成n-2个三角形。这些对角线只会相交在顶点。划分后的三角形中有一个是黑色的,其余的都是白色。两个选手轮流取,每一个选手每一次要从多边形中切下一个三角形。每个选手只允许沿着一条对角线切下一个三角形。切下黑色三角形的选手获得比赛的胜利。 注意:我们称一个多边形是凸多边形当且仅当任意两个顶点的连线都被包含在多边形的内部。

任务:编写程序, 1、从文本文件gra.in中读入关于凸多边形的描述。 2、判断是否先取的选手有一种必胜的策略。 3、将结果写入文件gra.out。

输入: 输入文件gra.in的第一行包含一个整数n,4 <= n <= 50000,表示多边形的顶点数。顶点按顺时针编号为0至n-1。 以下的n-2行描述该多变形划分成的三角形。第i+1行(1≤i≤n-2)包含三个非负整数,表示第i个三角形的三个顶点的编号。第一个描述的三角形是黑色的。

输出: 输出文件gra.out包含一个单词: ‘TAK’(在波兰文中表示“是”),如果先走的选手有必胜策略。 ‘NIE’(在波兰文中表示“否”),如果先走的选手没有必胜策略。

样例输入: 6 0 1 2 2 4 3 4 2 0 0 5 4

样例输出: TAK

《Polygons》解题报告 一、分析。 为了描述方便,我们用三角形的三个顶点的编号来表示三角形,如下图中的黑色三角形为(1,3,6)。 在 下图中,要切下黑色三角形(1,3,6),就必须切下三角形集合{(0,1,6)},{(1,2,3)},{(3,5,6),(3,4,5)}中的两个。 同样,对于任何一个凸多边形,要切下黑色三角形都必须切下三个三角形集合中的两个。切下一个三角形集合所需的步数是一定的,而与切的顺序无关,所以对于任 何一个三角形集合中我们只需考虑集合中三角形的个数而不必考虑分别是哪几个三角形。 设三个三角形集合的元素个数分别为a,b,c。下面的问题就是如何从状态(a,b,c)判断是否有必胜状态。 先分析必胜状态,首先(0,0,1)一定是必胜状态。若初始状态不是(0,0,n)则状态(0,0,c),c>1,实际是不可能出现的。 证明:(1)、状态(0,0,n)不存在。 (2)、若(0,0,c)n>=c>=2不存在,由于(0,0,c-1)只能从(0,0,c)和(0,1,c-1)中得到。 状态(0,0,c)不存在,而从(0,1,c-1)出发可以得到比(0,0,c-1)更优的(0,1,c-2),所以不可能选择(0,0,c-1)。 因此,若状态(0,0,(0,0,c-1)也不存在。 所以(0,0,c),c>1不存在,则(0,0,c-1)也是不存在的。 ∴ 若初始状态不是(0,0,n),则不可能出现(0,0,c),c>1。因此必胜状态只有一个(0,0,1)。 接 着,分析状态(a,b,c),a≠0,令s=a+b+c,称s为奇数的状态为奇状态,s为偶数的状态为偶状态。由于每一步只能将a,b,c中的一个数减 [...]

位运算实用教程

首先声明这个文章不是我原创,功劳归 Matrix67(First Published By Matrix67)但合并,整理 + 改编后效果更好,也删除和添加了一些东西,献给所有需要的人。首先还是从最基础的东西说起。

什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算 符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理): 110 AND 1011 ———- 0010  –>  2 由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。当然有人会说,这个快了有什么用,计算6 and 11没有什么实际意义啊。这一系列的文章就将告诉你,位运算到底可以干什么,有些什么经典应用,以及如何用位运算优化你的程序。

Pascal和C中的位运算符号 下面的a和b都是整数类型,则: C语言  |  Pascal语言 ——-+————- a & b  |  a and b a | b  |  a or b a ^ b  |  a xor b ~a   |   not a a << b |  a shl b a >> b |  a shr b [...]

第 1 页,共 2 页12