摘要: 这或许是众多OIer最大的误区之一。你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC问题,你如果不是很感兴趣就可以不看了。接下来你可以看到,把NP问题当成是 NPC问题是一个多大的错误。还是先用几句话简单说明一下时间复杂度。时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规 阅读全文
posted @ 2011-08-05 15:17 shallyzhang 阅读(134) 评论(0) 推荐(0)
摘要: 1、明明的随机数(Noip2006)【问题描述】明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。【输入文件】输入文件random.in 有2行,第1行为1个正整数,表示所生成的随机数的个数:N第2行有N个用空格隔开的正整数,为所产生的随机数。【输出文件】输出文件random.out 也是2行,第1行为1个正整数M,表示不相同的随机数的个 阅读全文
posted @ 2011-08-05 11:01 shallyzhang 阅读(1102) 评论(0) 推荐(0)
摘要: 1、数塔问题(tower.pas)设有一个三角形的数塔,如下图所示。顶点结点称为根结点,每个结点有一个整数数值。从顶点出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大。【样例输入】tower.in5 {数塔层数}1311 812 7 266 14 15 812 7 13 24 11【样例输出】tower.outmax=86【参考程序】//By LYLtimuses math;var n,i,j:byte; a:array[1..10,1..10]of word; f:array[1..10,1..10]of word;begin assign(inpu 阅读全文
posted @ 2011-08-05 10:56 shallyzhang 阅读(916) 评论(0) 推荐(0)
摘要: 问题描述我们要求找出具有下列性质数的个数(包含输入的自然数n):先输入一个自然数n(n<=1000000),然后对此自然数按照如下方法进行处理:1. 不作任何处理;2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.样例: 输入: 6 满足条件的数为 6 (此部分不必输出) 16 26 126 36 136输出: 6【算法的改进】一.递推式的改进输入数据要求n最大规模达到1000000。此时,O(n2)的算法在n较大时,必定超时。我们将求f[i]的递推式f[i]=1+f[1]+f[2]+…+f[i div 2]作一改 阅读全文
posted @ 2011-08-05 10:53 shallyzhang 阅读(287) 评论(0) 推荐(0)
摘要: 【问题描述】某国家被一条河划分为南北两部分,在南岸和北岸总共有N对城市,每一城市在对岸都有唯一的友好城市,任何两个城市都没有相同的友好城市。每一对友好城市都希望有一条航线来往,于是他们向政府提出了申请。由于河终年有雾。政府决定允许开通的航线就互不交叉(如果两条航线交叉,将有很大机会撞船)。兴建哪些航线以使在安全条件下有最多航线可以被开通。 【输入格式】输入文件(ship.in):包括了若干组数据,每组数据格式如下: 第一行两个由空格分隔的整数x,y,10〈=x〈=6000,10〈=y〈=100。x表示河的长度而y表示宽。第二行是一个整数N(1<=N<=5000),表示分布在河两岸的 阅读全文
posted @ 2011-08-05 10:53 shallyzhang 阅读(457) 评论(0) 推荐(0)
摘要: 描述 Description某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。输入格式 Input Format输入的第一行有两个整数L(1 <= L <= 1亿)和 M(1 < 阅读全文
posted @ 2011-08-05 10:52 shallyzhang 阅读(172) 评论(0) 推荐(0)
摘要: 字符串的展开(expand.pas/c/cpp)【问题描述】在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或“4-8”的子串,我们就把它当作一种简写,输出时,用连续递增的字母或数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:(1)遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号“-”,减号两侧同为小写字母或同为数字,且按照ASCII码的顺序,减号右边的字符严格大于左边的字符。(2)参数p1:展开方式。p 阅读全文
posted @ 2011-08-05 10:51 shallyzhang 阅读(466) 评论(0) 推荐(0)
摘要: 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1~MAX之间的每一个邮资值都能得到。(n<=10,k<=5)例如,N=3,K=2,如果面值分别为1分、4分,则在1分~6分之间的每一个邮资值都能得到(当然还有8分、9分和12分);如果面值分别为1分、3 分,则在1分~7分之间的每一个邮资值都能得到。可以验证当N=3,K=2时,7分就是可以得到的连续的邮资最大值,所以MAX=7,面值分别为1分、3 分。样例: INPUT OUTPUTN=3 K=2 1 3 MAX=7注:这是一道 阅读全文
posted @ 2011-08-05 10:50 shallyzhang 阅读(311) 评论(0) 推荐(0)
摘要: 1、砝码称重(Weight)【问题描述】设有1g,2g,3g,5g,10g,20g的砝码各若干枚(其总重≤1000g)。【输入格式】a1 a2 a3 a4 a5 a6(表示1g砝码有a1个,2g砝码有a2个,..20g砝码有a6个)【输出格式】Total=N (N表示用这些砝码能称出的不同重量的个数,不包括一个砝码也不用的情况)【输入样例】weight.in1 1 0 0 0 0【输出样例】weight.outTotal=3,表示可以称出1g,2g,3g三种不同的重量【参考程序】//By LYLtimvar i,a1,a2,a3,a4,a5,a6,s:word; a:array[1..6]of 阅读全文
posted @ 2011-08-05 10:49 shallyzhang 阅读(800) 评论(0) 推荐(0)
摘要: 高精度数的定义:type arr=array[word]of 0..9;1.高精度加法procedure init;var i:word;begin readln(s1);readln(s2); if s1='0' then begin writeln(s2); halt; end; if s2='0' then begin writeln(s1); halt; end; la:=length(s1);lb:=length(s2); for i:=1 to la do a[la-i+1]:=ord(s1[i])-ord('0'); for i:= 阅读全文
posted @ 2011-08-05 10:48 shallyzhang 阅读(261) 评论(0) 推荐(0)
摘要: 1.快速排序procedure qsort(l,r:word);var pl,pr,m,t:integer;begin pl:=l;pr:=r; m:=a[l+random(r-l+1)]; repeat while a[pl]<m do inc(pl); while a[pr]>m do dec(pr); if pl<=pr then begin t:=a[pl];a[pl]:=a[pr];a[pr]:=t; inc(pl);dec(pr); end; until pl>pr; if pl<r then qsort(pl,r); if pr>l then 阅读全文
posted @ 2011-08-05 10:47 shallyzhang 阅读(158) 评论(0) 推荐(0)
摘要: 【问题描述】给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:注意:1. 加号与等号各自需要两根火柴棍2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)3. n根火柴棍必须全部用上【输入】输入文件matches.in共一行,又一个整数n(n<=24)。【输出】输出文件matches.out共一行,表示能拼成的不同等式的数目。【输入输出样例1】matches.inmatches.out142【输入输出样例1解释】2个等式为0+1=1和1+0=1 阅读全文
posted @ 2011-08-05 10:46 shallyzhang 阅读(4118) 评论(0) 推荐(1)
摘要: 背景 Background国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。描述 Description华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分 阅读全文
posted @ 2011-08-05 10:42 shallyzhang 阅读(1452) 评论(0) 推荐(0)
摘要: 描述 Description某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人 8000 元,期末平均成绩高于 80 分( >80 ),并且在本学期内发表 1 篇或 1 篇以上论文的学生均可获得; 2) 五四奖学金,每人 4000 元,期末平均成绩高于 85 分( >85 ),并且班级评议成绩高于 80 分( >80 )的学生均可获得; 3) 成绩优秀奖,每人 2000 元,期末平均成绩高于 90 分( >90 )的学生均可获得; 4) 西部奖学金,每人 1000 元,期末平均成绩高于 85 分( >8 阅读全文
posted @ 2011-08-05 10:41 shallyzhang 阅读(154) 评论(0) 推荐(0)
摘要: NOI(信息学奥林匹克)联赛作为一项学科奥林匹克活动项目,这几年的初赛与复赛中都有一些跟其他科目结合类型的试题,解这种类型的试题不仅要有程序阅读与编写的能力,同时还要掌握其他相关学科的知识。这些相学科主要有数学、物理等,同时还有生活实践中的一些规则、方法等等。这几年的初赛解答题基本上都是综合知识与能力的考查。如2002年普及组解答题中有一道是火车调度题:按一定顺序进站(要当栈来理解)问有多少种出站方式?另有一道是关于排列组合的:红球3只黄球4只,这7只球一字排开有多少种颜色组合不同的排法?提高组(高中组)解答题中一道典型的是:5本书从书架上拿下来再放上去(只有5个位置),5本书全都不放原来位置 阅读全文
posted @ 2011-08-05 10:39 shallyzhang 阅读(238) 评论(0) 推荐(0)
摘要: 阅读程序,写运行结果(25分左右,3-4题)其实很容易,目的几乎是送分,而且占的分数很多,但得分率却不见得高。很容易不明不白的就把分(全)丢了!!!这部分程序考3个方面:1. 程序设计语言本身,如循环、递归、值型参和变量型参数、跟踪变量等;2. 归纳和数学运算能力;3. 是否掌握了一些常用算法(程序段)的框架;4. 细心、耐心等心理品质;灵感+编程的量等;一般做这类题目的核心是找程序目的:即这个程序想干什么。迄今为止考过的题目还没有“乱写”的,总有一点“写作目的”的。抓住了它,不仅得出答案变得很容易了,而且对自己的结果也会比较有信心。一般的解题步骤如下:1. 从总体上通读程序,大致把握程序的目 阅读全文
posted @ 2011-08-05 10:37 shallyzhang 阅读(204) 评论(0) 推荐(0)
摘要: 阅读程序是计算机语言考试的重要内容之一,故掌握阅读程序的方法是非常重要的。一般一个程序主要分三部分:(1)输入部分:主要是定义程序需要的变量、给变量赋初值,为下一步运行做准备。(2)处理部分:这部分是程序的核心,主要是通过执行相应的算法对数据进行加工处理,获得所要解决的问题的结果。(3)输出部分:输出处理部分获得的结果。有的程序将该部分与处理部分融为一体,即边处理边输出。例如:典型的n个数的升序排序程序 var a :array[1..100] of integer; readln(n); for i=1 to n do read(a[i]); for i=1 to n-1 do for j= 阅读全文
posted @ 2011-08-05 09:46 shallyzhang 阅读(346) 评论(0) 推荐(0)