2008noip提高组复赛题解

2008noip提高组复赛题解
2008noip提高组复赛题解

NOIP2008提高组解题报告

石家庄二中李博杰

1.笨小猴

【问题描述】

输入一个由小写字母构成的字符串,统计出现最多与最少字母的个数,若两数之差为质数,输出“Lucky Word”和差值;否则输出“No Answer”和0.

【题目类型】

模拟

【建议编程时间】

10分钟(细心一些,避免出错)。

【解题分析】

1、读入字符串(文件)

2、构造一个数组,记录a-z各字符出现的次数。枚举字符串中每个字符,将该字符对应数组元素加一。

3、枚举数组中a-z,找出最大值和非零最小值,求出它们的差。

4、判断差值是否为素数,数据规模很小,可用试除法。注意0,1的特殊情况。

5、输出,注意大小写、换行符。

2.火柴棒等式

【问题描述】

给n根火柴棒,问能拼出多少种形如“A+B=C”的等式。

【题目类型】

搜索

【建议编程时间】

30分钟。若某些问题未考虑到,调试20分钟。

【解题分析】

1、读入整数n,减去加号和等号需要的4根火柴。

2、采用搜索方法,先递归枚举火柴拆分成每个数字对应根数(存在数组里),再枚举加号

和等号的位置,计算对应的A,B,C,最后判断A+B=C,统计总数。

3、输出tot,注意换行。

【编程注意】

1、注意最高位不能为零,即除非该数为零,最高位不为零。

2、递归函数两个入口,表示当前剩余火柴根数、当前位数。枚举下一根火柴的数字,记录,

递归(剩余-当前火柴,位数+1)。

3、当剩余根数为零时,枚举A,B,C的拆分方式。

4、计算A时,先将A设为首位,若首位为零且位数大于1,则失败退出(最高位不为零)

从首位+1到末位:A*=10, A+=a[i]. 字符串转为整数的常用方法。

5、注意个数为0时的特殊处理。

3.传纸条

【问题描述】

从m*n的矩阵中,只能向下、右两个方向走,找到两条互不相交的路径,使得两条路径上的权值之和最大。

【题目类型】

双线程动态规划

【建议编程时间】

40分钟。这里的编程时间包括调试时间。

【空间复杂度】

约27M,全局变量完全可承受。50*50*50*50*sizeof(int)=2.5*10^7.

【解题分析】

1、读入矩阵,注意行列。

2、采用一个四维数组记录当前两条路走到的位置(i1,j1,i2,j2)时取得的最大值,初始化为0,

表示不可能到达。(0,0,0,0)为1,最后减1输出。

3、一个四重循环枚举两条路分别走到的位置。由于每个点均从上或左继承而来,故内部有

四个if,分别表示两个点从上上、上左、左上、左左继承来时,加上当前两个点所取得的最大值。例如,f[i][j][k][l] = max{f[i][j][k][l], f[i-1][j][k-1][l] + a[i][j] + a[k][l]},表示两点均从上面位置走来。

4、输出右下角处的最大值f[m][n][m][n],注意换行。

【编程注意】

1、在数组边界处特殊处理,避免数组越界。

2、若待继承的点最大值为零,则停止判断,不能从这里走来。

3、显然,非矩阵右下角的汇合点,两个位置不能重合(否则路径相交),若重合则最大值

为0,不可达。

4.双栈排序

【问题描述】

通过两个栈S1,S2,将一个给定的输入序列升序排列。定义a操作将元素压入S1栈,b操作从S1栈中取出栈顶元素,c操作将元素压入S2栈,d操作从S2栈中取出栈顶元素。求字典序最小的操作序列。

【建议编程时间】

贪心算法40分钟(包括调试),可得30分。

【解题分析】(贪心算法,30分)

1、读入序列

2、若能进入S1栈,则执行a操作,进入S1栈;重复执行b操作,将S1栈中当前元素弹出,直到不可行为止。

3、若能进入S2栈(c),并将S2中符合要求的元素弹出(d),直到不可行。

4、若两栈均无法进入,失败退出

5、输出操作序列

【判断是否能进栈】

若当前元素小于栈顶元素,则进栈,栈元素个数自增;否则不能进栈。因为栈中必须保持降序,这样才能保证依次输出时升序。

【判断是否能出栈】

用全局变量表示当前取出的最大元素。若栈内元素个数不为零,且当前栈顶元素等于最大元

素+1(因为元素是1-n依次取出的),则取出该元素,最大元素自增,栈元素个数自减。【正确解题分析】(转载,感谢提供解题方法的大牛)

这道题大概可以归结为如下题意:

有两个队列和两个栈,分别命名为队列1(q1),队列2(q2),栈1(s1)和栈2(s2).最初的时候,q2,s1和s2都为空,而q1中有n个数(n<=1000),为1~n的某个排列.

现在支持如下四种操作:

a操作,将q1的首元素提取出并加入s1的栈顶.

b操作,将s1的栈顶元素弹出并加入q1的队列尾.

c操作,将q1的首元素提取出并加入s2的栈顶.

d操作,将s2的栈顶元素弹出并加入q1的队列尾.

请判断,是否可以经过一系列操作之后,使得q2中依次存储着1,2,3,…,n.如果可以,求出字典序最小的一个操作序列.

这道题的错误做法很多,错误做法却能得满分的也很多,这里就不多说了.直接切入正题,就是即将介绍的这个基于二分图的算法.

注意到并没有说基于二分图匹配,因为这个算法和二分图匹配无关.这个算法只是用到了给一个图着色成二分图.

第一步需要解决的问题是,判断是否有解.

考虑对于任意两个数q1[i]和q1[j]来说,它们不能压入同一个栈中的充要条件是什么(注意没有必要使它们同时存在于同一个栈中,只是压入了同一个栈).实际上,这个条件p是:存在一个k,使得i

首先证明充分性,即如果满足条件p,那么这两个数一定不能压入同一个栈.这个结论很显然,使用反证法可证.

假设这两个数压入了同一个栈,那么在压入q1[k]的时候栈内情况如下:

…q1[i]…q1[j]…

因为q1[k]比q1[i]和q1[j]都小,所以很显然,当q1[k]没有被弹出的时候,另外两个数也都不能被弹出(否则q2中的数字顺序就不是1,2,3,…,n了).

而之后,无论其它的数字在什么时候被弹出,q1[j]总是会在q1[i]之前弹出.而q1[j]>q1[i],这显然是不正确的.

接下来证明必要性.也就是,如果两个数不可以压入同一个栈,那么它们一定满足条件p.这里我们来证明它的逆否命题,也就是"如果不满足条件p,那么这两个数一定可以压入同一个栈." 不满足条件p有两种情况:一种是对于任意iq1[i];另一种是对于任意iq1[j].

第一种情况下,很显然,在q1[k]被压入栈的时候,q1[i]已经被弹出栈.那么,q1[k]不会对q1[j]产生任何影响(这里可能有点乱,因为看起来,当q1[j]

第二种情况下,我们可以发现这其实就是一个降序序列,所以所有数字都可以压入同一个栈. 这样,原命题的逆否命题得证,所以原命题得证.

此时,条件p为q1[i]和q1[j]不能压入同一个栈的充要条件也得证.

这样,我们对所有的数对(i,j)满足1<=i

二分图的两部分看作两个栈,因为二分图的同一部分内不会出现任何连边,也就相当于不能压入同一个栈的所有结点都分到了两个栈中.

此时我们只考虑检查是否有解,所以只要O(n)检查出这个图是不是二分图,就可以得知是否有解.

此时,检查有解的问题已经解决.接下来的问题是,如何找到字典序最小的解.

实际上,可以发现,如果把二分图染成1和2两种颜色,那么结点染色为1对应当前结点被压入s1,为2对应被压入s2.为了字典序尽量小,我们希望让编号小的结点优先压入s1.

又发现二分图的不同连通分量之间的染色是互不影响的,所以可以每次选取一个未染色的编号最小的结点,将它染色为1并从它开始DFS染色,直到所有结点都被染色为止.这样,我们就得到了每个结点应该压入哪个栈中.接下来要做的,只不过是模拟之后输出序列啦~

还有一点小问题,就是如果对于数对(i,j),都去枚举检查是否存在k使得p1[k]

附代码(除去注释不到100行),带注释.代码中的a数组对应文中的队列p1.

已经过掉所有标准数据,以及5 7 2 4 1 6 3这组让很多贪心程序挂掉的数据~

#include

using namespace std;

const int nn = 1002, mm = nn * 2, inf = 1000000000;

int n, tot, now;

int a[nn], b[nn], head[nn], color[nn];

int adj[mm], next[mm];

int stack[3][nn];

bool result;

void addEdge(int x, int y) //加边

{

++ tot;

adj[tot] = y;

next[tot] = head[x];

head[x] = tot;

}

bool dfs(int i) //DFS染色,检查图是否是二分图的经典算法

{

int temp = head[i];

while (temp) //邻接表,检查每一条边

{

if (! color[adj[temp]]) //如果与当前结点的结点还未染色

{

color[adj[temp]] = 3 - color[i]; //进行染色

dfs(adj[temp]); //DFS

}

if (color[adj[temp]] == color[i]) return false;

//如果两个相邻结点染色相同,说明此图不是二分图,返回无解temp = next[temp];

}

return true;

}

int main()

{

freopen("twostack.in", "r", stdin);

freopen("twostack.out", "w", stdout);

//输入

scanf("%d", &n);

for (int i = 1; i <= n; ++ i) scanf("%d", &a[i]);

//预处理b数组

b[n + 1] = inf;

for (int i = n; i >= 1; -- i) b[i] = min(b[i + 1], a[i]); //"min" in STL

//枚举数对(i,j)并加边

tot = 0;

for (int i = 1; i <= n; ++ i)

for (int j = i + 1; j <= n; ++ j)

if (b[j + 1] < a[i] && a[i] < a[j])

{

addEdge(i, j);

addEdge(j, i);

}

//DFS染色

memset(color, 0, sizeof(color));

result = true;

for (int i = 1; i <= n; ++ i) //每次找当前未染色的编号最小的结点,并染颜色1 if (! color[i]) //当前位置尚未被染色

{

color[i] = 1;

if (! dfs(i)) //染色时出现矛盾,此时图不是一个二分图,即无法分配到两个栈中

{

result = false; //记录无解

break;

}

}

if (! result) //无解

printf("0");

else //有解

{

//模拟求解

now = 1;

for (int i = 1; i <= n; ++ i)

{

//将当前数字压入对应的栈

if (color[i] == 1)

printf("a ");

else

printf("c ");

stack[color[i]][0] ++;

stack[color[i]][stack[color[i]][0]] = a[i]; //this will work even if stack[1][0] = 0

//循环检查,如果可以的话就从栈顶弹出元素

while (stack[1][stack[1][0]] == now || stack[2][stack[2][0]] == now)

{

if (stack[1][stack[1][0]] == now)

{

printf("b ");

stack[1][0] --;

}

else if (stack[2][stack[2][0]] == now)

{

printf("d ");

stack[2][0] --;

}

now ++;

}

}

}

第四题上述程序转载自https://www.360docs.net/doc/c09771381.html,。

结语

以上四道题全部做完,需要约140分钟,距离三小时的时限还有40分钟,可以编一些特殊的、极端的数据对程序进行测试。

这个阶段要做好源代码备份,除非发现重大问题,不要修改程序源代码,尤其在离终场10分钟以内时,因为此时头脑紧张,极易改错。

这样下来,330分不是大问题,在河北省就进入省队了。但是,很多平时成绩不错的大牛考试时粗心大意,丢分现象十分严重。这次考试的题目很水,更考察选手的细心认真程度。真正的高手不仅会做难题,水题也能保证不出错。只有不出错,才能省队,因为第四题竞赛时几乎没人想出正确解法;只有保证错误不足半道,才能一等奖,因为河北省一等奖分数线是280分。实际上,对于如此普及组难度的水题,即使实力一般,也可能拿到不错的成绩。

希望NOIP2008成功的同学总结经验,再接再厉,创造更好的成绩;NOIP失利的同学不要气馁,总结教训,认真细致,下次再争取。

NOIP2014提高组复赛精彩试题(卷)

CCF全国信息学奥林匹克联赛(NOIP2014)复赛 提高组 day1 1.生活大爆炸版石头剪刀布 (rps.cpp/c/pas) 【问题描述】 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势: 斯波克:《星际迷航》主角之一。 蜥蜴人:《星际迷航》中的反面角色。 这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。 表一石头剪刀布升级版胜负关系 现在,小A和小B尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-……”,而如果小B 以“剪刀-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-……” 已知小A和小B一共进行N次猜拳。每一次赢的人得1分,输的得0分;平局两人都得0分。现请你统计N次猜拳结束之后两人的得分。 【输入】 输入文件名为rps.in。 第一行包含三个整数:N,NA,NB,分别表示共进行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。数与数之间以一个空格分隔。 第二行包含NA个整数,表示小A出拳的规律,第三行包含NB个整数,表示小B出拳的规律。其中,0表示“剪刀”,1表示“石头”,2表示“布”,3表示“蜥蜴人”, 4表示“斯波克”。数与数之间以一个空格分隔。

NOIP2015提高组复赛试题Day2

全国信息学奥林匹克联赛(2015)复赛 提高组 2 (请选手务必仔细阅读本页内容) 一.题目概况 二.提交源程序文件名 三.编译命令(不包含任何优化开关) 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、中函数 ()的返回值类型必须是,程序正常结束时的返回值必须是 0。 3、全国统一评测时采用的机器配置为: () x2 240 ,2.8,内存 4G,上述时限以此配置为准。 4、只提供格式附加样例文件。 5、特别提醒:评测在当前最新公布的下进行,各语言的编译

器版本以其为准。

1.跳石头 () 【问题描述】 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。 为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 M 块岩石(不能移走起点和终点的岩石)。 【输入格式】 输入文件名为。 输入文件第一行包含三个整数 L,N,M,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。 接下来 N 行,每行一个整数,第 i 行的整数(0 < < L)表示第 i 块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。 【输出格式】 输出文件名为。 输出文件只包含一个整数,即最短跳跃距离的最大值。 【输入输出样例 1】 【输入输出样例 1 说明】 将与起点距离为 2 和 14 的两个岩石移走后,最短的跳跃 距离为 4(从与起点距离 17 的岩石跳到距离 21 的岩石,或者

2008noip普及组复赛--排座位--代码C++

2.排座椅 (seat.pas/c/cpp) 【问题描述】 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。 请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生对数最少。 【输入】 输入文件seat.in的第一行,有5各用空格隔开的整数,分别是M,N,K,L,D(2<=N,M<=1000,0<=K

NOIP2008提高组复赛试题及题解

全国信息学奥林匹克联赛(NOIP2008)复赛 提高组 一、题目概览 二、提交源程序文件名 三、编译命令(不包含任何优化开关) 四、运行内存限制 注意事项: 1. 文件名(程序名和输入输出文件名)必须使用大写。 2. C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3. 全国统一评测时采用的机器配置为:CPU 1.9GHz,内存512M,上述时限以此配置为准。各省在自测时可根据具体配置调整时限。

1. 笨小猴 (word.pas/c/cpp) 【问题描述】 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。 【输入】 输入文件word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。【输出】 输出文件word.out共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”; 第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。 【输入输出样例1】 【输入输出样例1解释】 单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。 【输入输出样例2】 【输入输出样例2解释】 单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。 基本的字符串处理,细心一点应该没问题的,不过判断素数时似乎需要考虑下0和1的情况。var a:array['a'..'z']of integer; s:string; l,i,max,min,n:integer; ch:char;flag:boolean; begin assign(input,'word.in'); reset(input); assign(output,'word.out'); rewrite(output); readln(s);

NOIP2015提高组

CCF全国信息学奥林匹克联赛(NOIP2015)复赛 提高组 day1 (请选手务必仔细阅读本页内容) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz, 内存4G,上述时限以此配置为准。 4、只提供Linux格式附加样例文件。 5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。

1.神奇的幻方 (magic.cpp/c/pas) 【问题描述】 幻方是一种很神奇的 N?N 矩阵:它由数字 1,2,3,……,N?N 构成,且每行、每列及两条对角线上的数字之和都相同。 当 N 为奇数时,我们可以通过以下方法构建一个幻方: 首先将 1 写在第一行的中间。 之后,按如下方式从小到大依次填写每个数 K(K=2,3,…,N?N) : 1.若(K?1)在第一行但不在最后一列,则将 K 填在最后一行,(K?1)所在列 的右一列; 2.若(K?1)在最后一列但不在第一行,则将 K 填在第一列,(K?1)所在行的上 一行; 3.若(K?1)在第一行最后一列,则将 K 填在(K?1)的正下方; 4.若(K?1)既不在第一行,也不在最后一列,如果(K?1)的右上方还未填数, 则将K填在(K?1)的右上方,否则将 K 填在(K?1)的正下方。 现给定 N,请按上述方法构造 N?N 的幻方。 【输入格式】 输入文件名为magic.in。 输入文件只有一行,包含一个整数 N,即幻方的大小。 【输出格式】 输出文件名为magic.out。 输出文件包含 N行,每行 N个整数,即按上述方法构造出的 N?N 的幻方。相邻两个整数之间用单个空格隔开。 magic/magic1.in magic/magic1.ans 【输入输出样例2】 见选手目录下的magic/magic2.in和magic/magic2.ans。 【数据规模与约定】 对于 100% 的数据,1≤N≤39 且 N 为奇数。

NOIP2013初赛提高组Pascal试题及答案

第十九届全国青少年信息学奥林匹克联赛初赛 提高组Pascal 语言试题 竞赛时间:2013 年10 月13 日14:30~16:30 选手注意: ●试题纸共有12 页,答题纸共有2 页,满分100 分。请在答题纸上作答,写在试题纸上 的一律无效。 ●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共15 题,每题1.5 分,共计22.5 分;每题有且仅有一个正确选项) 1. 一个32 位整型变量占用()个字节。 A. 4 B. 8 C. 32 D. 128 2. 二进制数11.01 在十进制下是()。 A. 3.25 B. 4.125 C. 6.25 D. 11.125 3. 下面的故事与()算法有着异曲同工之妙。 从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:?从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’? A. 枚举 B. 递归 C. 贪心 D. 分治 4. 1948 年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。 A. 冯·诺伊曼(John von Neumann) B. 图灵(Alan Turing) C. 欧拉(Leonhard Euler) D. 克劳德·香农(Claude Shannon) 5. 已知一棵二叉树有2013 个节点,则其中至多有()个节点有2 个子节点。 A. 1006 B. 1007 C. 1023 D. 1024 6. 在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通 图,至少要删去其中的()条边。

NOIP普及组复赛解题报告

NOIP2015 普及组解题报告 南京师范大学附属中学树人学校CT 1.金币(coin.cpp/c/pas) 【问题描述】国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金 币;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金 币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。 请计算在前K 天里,骑士一共获得了多少金币。【输入格式】 输入文件名为coin.in 。 输入文件只有1行,包含一个正整数K,表示发放金币的天数。 【输出格式】 输出文件名为coin.out。 输出文件只有1 行,包含一个正整数,即骑士收到的金币数。 【数据说明】 对于100%的数据,1 < K < 10,000 【思路】 模拟 【时空复杂度】 O(k) ,O(1) 2 、扫雷游戏(mine.cpp/c/pas ) 【问题描述】

扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。 现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。 【输入格式】 输入文件名为mine.in 。 输入文件第一行是用一个空格隔开的两个整数n和m分别表示雷区的行数和列数。 接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符’* '表示相应格子是地雷格,字符' ?'表示相应格子是非地雷格。相邻字符之间无分隔符。【输出格式】输出文件名为mine.out 。 输出文件包含n行,每行m个字符,描述整个雷区。用’* '表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符。 【数据说明】 对于100% 的数据,1< n W 1Q01< me 100 【思路】 模拟 【技巧】 可将数组多开一圈,省去边界条件的判断 【时空复杂度】 O(mn),O(mn)

NOIP2013提高组复赛Day2

CCF全国信息学奥林匹克联赛(NOIP2013)复赛 提高组 day2 (请选手务必仔细阅读本页内容) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) 64x2 Dual Core CPU 5200+, 2.71GHz,内存2G,上述时限以此配置为准。 4、只提供Linux格式附加样例文件。 5、特别提醒:评测在NOI Linux下进行。

1.积木大赛 (block.cpp/c/pas) 【题目描述】 春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是?i。 在搭建开始之前,没有任何积木(可以看成n块高度为0的积木)。接下来每次操作,小朋友们可以选择一段连续区间[L,R],然后将第L块到第R块之间(含第L块和第R块)所有积木的高度分别增加1。 小M是个聪明的小朋友,她很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少。但她不是一个勤于动手的孩子,所以想请你帮忙实现这个策略,并求出最少的操作次数。 【输入】 输入文件为block.in 输入包含两行,第一行包含一个整数n,表示大厦的宽度。 第二行包含n个整数,第i个整数为?i。 【输出】 输出文件为block.out 仅一行,即建造所需的最少操作数。 【样例解释】 其中一种可行的最佳方案,依次选择 [1,5] [1,3] [2,3] [3,3] [5,5] 【数据范围】 对于30%的数据,有1≤n≤10; 对于70%的数据,有1≤n≤1000; 对于100%的数据,有1≤n≤100000,0≤?i≤10000。

NOIP2008初赛普及组试题

第十四届全国青少年信息学奥林匹克联赛初赛试题 (普及组Pascal语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、单项选择题(共20题,每题1.5分。每题有且仅有一个正确答案。) 1.微型计算机中,控制器的基本功能是()。 A.控制机器各个部件协调工作B.实现算术运算和逻辑运算 C.获取外部信息D.存放程序和数据 2.设A=True,B=False,C=True,D=False,以下逻辑运算表达式值为真的是()。A.(A∧B)∨(C∧D∨﹁A) B.((﹁A∧B)∨C)∧﹁D C.(B∨C∨D)∧D∧A D.A∧(D∨﹁C)∧B 3.在下列关于图灵奖的说法中,不正确的是()。 A.图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业作出重要贡献的个人 B.图灵奖有“计算机界诺贝尔奖”之称 C.迄今为止,还没有华裔计算机科学家获此殊荣 D.图灵奖的名称取自计算机科学的先驱、英国科学家阿兰·图灵 4.计算机在工作过程中,若突然停电,()中的信息不会丢失。 A.ROM 和RAM B.CPU C.ROM D.RAM 5.完全二叉树共有2*N-1个结点,则它的叶节点数是()。 A.N-1 B.N C.2*N D.2N-1 6.在以下各项中,( )不是操作系统软件。 A.Solaris B.Linux C.Windows Vista D.Sybase 7.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈S,出栈的序列为b,d,f,e,c,a,则栈S的容量至少应该是()。 A.6 B.5 C.4 D.3 8.与十进制数28.5625相等的四进制数是()。 A.123.21 B.131.22 C.130.22 D.130.21 9.设字符串S=”Olympic”,S的非字串的数目是()。 A.28 B.29 C.16 D.17 10.Web2.0 是近年来互联网的热门概念之一,其核心思想是互动与分享。下列网站中,()是典型的Web 2.0应用。 A.Sina B.Flicker C.Yahoo D.Google

noip2017提高组试题

CCF 全国信息学奥林匹克联赛(NOIP2017)复赛 提高组 day1 (请选手务必仔细阅读本页内容) 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz, 内存4G,上述时限以此配置为准。 4、只提供Linux 格式附加样例文件。 5、提交的程序代码文件的放置位置请参照各省的具体要求。 6、特别提醒:评测在当前最新公布的NOI Linux 下进行,各语言的编译器版本以其为准。

【问题描述】1.小凯的疑惑 (math.cpp/c/pas) 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。 【输入格式】 输入文件名为math.in。 输入数据仅一行,包含两个正整数a 和b,它们之间用一个空格隔开,表示小凯手中金币的面值。 【输出格式】 输出文件名为math.out。 输出文件仅一行,一个正整数N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。 见选手目录下的math/math1.in 和math/math1.ans。 【输入输出样例1 说明】 小凯手中有面值为3 和7 的金币无数个,在不找零的前提下无法准确支付价值为1、2、4、5、8、11 的物品,其中最贵的物品价值为11,比11 贵的物品都能买到,比如: 12 = 3 * 4 + 7 * 0 13 = 3 * 2 + 7 * 1 14 = 3 * 0 + 7 * 2 15 = 3 * 5 + 7 * 0 …… 【输入输出样例2】 见选手目录下的math/math2.in 和math/math2.ans。 【数据规模与约定】 对于30%的数据: 1 ≤ a,b ≤ 50。 对于60%的数据: 1 ≤ a,b ≤ 10,000。 对于100%的数据:1 ≤ a,b ≤ 1,000,000,000。

NOIP2015初赛普及组C++试题及参考答案

第二十一届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2015年10月11日14:30-16:30 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项) ⒈1MB等于( )。 A.10000字节 B.1024字节 C.1000×1000字节 D.1024×1024字节 ⒉在PC机中,PENTIUM(奔腾)、酷睿、赛扬等是指( )。A.生 产厂家名称 B.硬盘的型号 C.CPU的型号 D.显示器的型号 ⒊操作系统的作用是( )。 A.把源程序译成目标程序 B.便于进行数据管理 C.控制和管理系统资源 D.实现硬件之间的连接 ⒋在计算机内部用来传送、存贮、加工处理的数据或指令都是以( )形式进行的。 A.二进制码 B.八进制码 C.十进制码 D.智能拼音码 ⒌下列说法正确的是( )。 A.CPU的主要任务是执行数据运算和程序控制 B.存储器具有记忆能力,其 中信息任何时候都不会丢失C.两个显示器屏幕尺寸相同,则它们的分辨率 必定相同D.个人用户只能使用Wifi的方式连接到Internet ⒍二进制数00100100和00010100的和是( )。 A.00101000 B.01100111 C.01000100 D.00111000 ⒎与二进制小数0.1相等的十六进制数是( )。 A.0.8 B.0.4 C.0.2 D.0.1 ⒏所谓的“中断”是指( )。A.操 作系统随意停止一个程序的运行 B.当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的过程 C.因停机而停止一个程序的运行 D.电脑死机 ⒐计算机病毒是( )。A.通过计算机传播的 危害人体健康的一种病毒 B.人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合 C.一种由于计算机元器件老化而产生的对生态环境有害的物质 D.利用计算 机的海量高速运算能力而研制出来的用于疾病预防的新型病毒 ⒑FTP可以用于( )。 A.远程传输文件 B.发送电子邮件 C.浏览网页 D.网上聊天 ⒒下面哪种软件不属于即时通信软件( )。 A.QQ B.MSN C.微信 D.P2P

noip普及组复赛入门训练12(答案)

PASCAL复习12 1.自然数(文件名ZRS.PAS) 【问题描述】任意给定一个自然数M(M<999999999),如果它的所有各位数字都是由0或1组成,则输出YES,否则输出NO.例: 输入:100 输出:YES 输入:31 输出: NO Var m,x,a:longint; f:boolean; Begin readln(m); x:=m; f:=true; while (x>0)and f do begin a:=x mod 10; if (a<>0)and(a<>1) then f:=false; x:=x div 10; end; if f then writeln(‘YES’) else writeln(‘NO’); readln; End. 2.字符串(文件名ZFC.PAS) 【问题描述】由键盘输入一个超过10个字符的字符串,已知其中有两个“A”,以回车键结束。请你编个程序实现一下两个功能, 1、打印出第一个“A”所在的位置 2、打印出两个“A”之间的字符以及字符个数。 输入:TEACHERSTUDENTAND 输出:3 CHERSTUDENT 11 V AR T,T1:INTEGER; C:CHAR; BEGIN T:=0;t1:=0; Read(c); Repeat t:=t+1;

if c=‘A’then begin writeln(t); read(c); repeat write(c); t1:=t1+1; read(c); until c=‘A’; end; read(c); Until c=chr(13); Writeln; Writeln(t1); END. 3.数位和与积(文件名HWHJ.pas) 【问题描述】试编写程序求出n个自然数的各个数位之和与之积。输入:一个自然数n(n<=5)及n个自然数 输出:各行依次输出每一个自然数n的各个数位之和与之积。例如: 输入: 3 92 23 1024 输出 11 18 5 6 7 0 var i,t,x,y,z:integer; begin readln(t); for i:=1 to t do begin read(x); y:=0; z:=1; while x>0 do begin y:=y+x mod 10; z:=z*(x mod 10); x:=x div 10; end; writeln(y,' ',z); end; readln; readln end. 4. 黑色星期五(文件名HSXQW.PAS)

NOIP2007_提高组_复赛试题

全国信息学奥林匹克联赛(NOIP2007)复赛提高组 1.统计数字 (count.pas/c/cpp) 【问题描述】 某次科研调查时得到了n 个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数 不超过10000 个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。【输入】 输入文件count.in包含n+1 行:第1 行是整数 n,表示自然数的个数。 第2~n+1 行每行一个自然数。 【输出】输出文件count.out包含m 行(m 为n 个自然数中不相同数的个数),按照自然数从小到大 的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。 【输入输出样例】 【限制】 40%的数据满足:1<=n<=1000 80%的数据满足:1<=n<=50000 100%的数据满足:1<=n<=200000,每个数均不超过1 500 000 000(1.5*109)

2.字符串的展开 (expand.pas/c/cpp) 【问题描述】 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或“4-8”的子串,我们就把它当作一种简写,输出时,用连续递增的字母或数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:(1)遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号“-”,减号两侧 同为小写字母或同为数字,且按照ASCII 码的顺序,减号右边的字符严格大于左边的字符。 (2)参数p1:展开方式。p1=1 时,对于字母子串,填充小写字母;p1=2 时,对于字母子串, 填充大写字母。这两种情况下数字子串的填充方式相同。p1=3 时,不论是字母子串还是数字子串, 都用与要填充的字母个数相同的星号“*”来填充。 (3)参数p2:填充字符的重复个数。p2=k 表示同一个字符要连续填充k 个。例如,当p2=3 时,子串“d-h”应扩展为“deeefffgggh”。减号两侧的字符不变。 (4)参数p3:是否改为逆序:p3=1 表示维持原有顺序,p3=2 表示采用逆序输出,注意这时仍然不包括减号两端的字符。例如当p1=1、p2=2、p3=2 时,子串“d-h”应扩展为“dggffeeh”。 (5)如果减号右边的字符恰好是左边字符的后继,只删除中间的减号,例如:“d-e”应输出为“de”,“3-4”应输出为“34”。如果减号右边的字符按照ASCII 码的顺序小于或等于左边字符, 输出时,要保留中间的减号,例如:“d-d”应输出为“d-d”,“3-1”应输出为“3-1”。 【输入】 输入文件expand.in包括两行: 第1 行为用空格隔开的3 个正整数,依次表示参数p1,p2,p3。 第2 行为一行字符串,仅由数字、小写字母和减号“-”组成。行首和行末均无空格。 【输出】 输出文件expand.out只有一行,为展开后的字符串。

noip2015初赛普及组答案分析

单项选择题 1.A。计算机内部的用来传送、存贮、加工处理的数据或指令都是以二进制形式进行的。 2.A。写这题我用的是排除法,B选项显然不对,内存在断电后数据会丢失,C选项也是,屏幕的分辨率是可以手动调整的,D选项,当年我们都用宽带连接Internet的。 3.A。二进制小数转化为十六进制小数时,每四位二进制数转化为以为 十六进制数,故0.10002可以转化为0.816。 4.D。我的做法是将每个数都化为二进制形式,因为十六进制数和八进 制数转化为二进制数很容易,最后求得答案是D。 5.D。在链表中,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域,结点与结点之间是用指针 连接的,故地址不必连续。 6.B。模拟一下进栈出栈的过程就行了,共有6次操作:进栈,进栈,出栈,进栈,进栈,出栈,每次操作后栈内元素分别为”a”,”a b”,”a”,”a b c”,”a b c d”,”a b c”,故最后栈顶元素是c。 7.B。前序遍历的顺序是”根->左->右”,后序遍历的顺序是”左->右->根”,对照四个答案,只有B能满足题目要求。 8.B。我们知道树高为n的满二叉树的结点个数为2n?1,当树高为5 时结点个数为31,当树高为6时结点个数为63,故答案是B。 9.B。画一张图的事情,就不说了。 10.D。由递推公式可得T(n)=1+(1+2+…+n)=n2+n2+1,故算法时间 的复杂度为O(n2)。 11.D。用vector存边,由一个顶点的边引到另一个顶点,再不断引出别的顶点,过程中每个顶点和每条边都只用到一遍,故复杂度为O(n+e)。12.A。哈夫曼算法用来求哈夫曼树,此树的特点就是引出的路程最短, 求的过程运用到贪心思想,具体的请参考一下别的文章。 13.D。llink和rlink分别指向前驱和后继,不妨设p的前驱为o,在未插入前 p->llink就是o,o->rlink就是p,插入时,先将o->rlink赋为q,再将 q->rlink赋为p,然后将q->llink赋为o,最后将p->llink赋为q。 14.A。最粗暴的方法就是直接模拟,不知道有没有更先进的算法。 15.A。- -丨这题猜猜都是A,哪有考生自带鼠标的。

noip2004 提高组复赛试题及参考程序(pascal)

第十届信息学奥林匹克联赛复赛试题(NOIP2004) 一、津津的储蓄计划(save.pas/c/cpp) 【问题描述】 津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。 例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。 津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。 现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。 【输入文件】 输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。 【输出文件】 输出文件save.out包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。 【样例输入1】 290 230 280 200 300 170 340 50 90 80 200 60 【样例输出1】 -7 【样例输入2】 290 230

NOIP2012提高组复赛试题

全国信息学奥林匹克联赛(2012)复赛提高组2 2. 1 ·同余方程 〖问题描述〗 求关于的同余方程三1 (句的最小正整数解。 输入〗 输入文件为 输入只有一行,包含两个正整数用一个空格隔开 输出〗 输出文件为 输出只有一行,包含一个正整数№即最小正整数解。输入数据保证一定有解。 〖输入输出样例〗 对于40%的数据,2 L000:对于60%的数据, 2 50,000,000: 对于100%的数据,2,2,000,000,000。 2 ·借教室 (. ) 问题描述〗 在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教室的信息,我们自然希望编程解决这个问 题。

我们需要处理接下来n天的借教室信息,其中第i天学校有个教室可供租借。共有m份订单,每份订单用三个正整数描述,分别为d],斗t},表示某租借者需要从第丬天到第t]天租借教室(包括第丬天和第t)天),每天需要租借个教室。 我们假定,租借者对教室的大小、地点没有要求。即对于每份订单,我们只需要每天提供d]个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。 借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。这里的无法满足指从第丬天到第t)天中有至少一天剩余的教室数量不足d)个。现在我们需要知道,是否会有订单无法完全满足。如果有,需要通知哪一个申请人修改 输入〗 输入文件为 第一行包含两个正整数n,m,表示天数和订单的数量。 第二行包含n个正整数,其中第i个数为,表示第i天可用于租借的教室数量。 接下来有m行,每行包含三个正整数],t],表示租借的数量,租借开始、结束分别在第几天。 每行相邻的两个数之间均用一个空格隔开。天数与订单均用从1开始的整数编号。 〖输出〗 输出文件为 如果所有订单均可满足,则输出只有一行,包含一个整数0。否则(订单无法完全满足)输出两行,第一行输出一个负整数一1 ,第二行输出需要修改订单的申请人编号。 〖输入输出样例〗

NOIP2008初赛普及组C++题目及答案

第十四届全国青少年信息学奥林匹克联赛初赛试题2008 (普及组C++语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。 1.微型计算机中,控制器的基本功能是()。 A.控制机器各个部件协调工作 B.实现算术运算和逻辑运算 C.获取外部信息 D.存放程序和数据 2.设A=true,B=false,C=true,D=false,以下逻辑运算表达式值为真的是()。 A.(A∧B)∨(C∧D∨?A) B.((?A∧B)∨C)∧?D C.(B∨C∨D)∧D∧A D.A∧(D∨?C)∧B 3.在下列关于图灵奖的说法中,不正确的是()。 A.图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业作出重要贡献的个人 B.图灵奖有“计算机界诺贝尔奖”之称 C.迄今为止,还没有华裔计算机科学家获此殊荣 D.图灵奖的名称取自计算机科学的先驱、英国科学家阿兰·图灵 4.计算机在工作过程中,若突然停电,()中的信息不会丢失。 A.ROM和RAM B.CPU C.ROM D.RAM 5.完全二叉树共有2*N-1个结点,则它的叶节点数是()。 A.N-1 B.N C.2*N D.2N-1 6.在以下各项中,()不是操作系统软件。 A.Solaris B.Linux C.WindowsVista D.Sybase 7.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈S,出栈的序列为b,d,f,e,c,a,则 栈S的容量至少应该是()。 A.6 B.5 C.4 D.3 8.与十进制数28.5625相等的四进制数是()。 A.123.21 B.131.22 C.130.22 D.130.21 9.设字符串S=”Olympic”,S的非空子串的数目是()。 A.28 B.29 C.16 D.17 10.Web2.0是近年来互联网的热门概念之一,其核心思想是互动与分享。下列网站中,()是典型的Web2.0应用。 A.Sina B.Flickr C.Yahoo D.Google 11.递归过程或函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。 A.队列 B.多维数组 C.线性表 D.栈 12.(2008)10+(5B)16的结果是()。 A.(833)16 B.(2089)10 C.(4163)8 D.(100001100011)2 13.二叉树T,已知其先根遍历是1243576(数字为结点的编号,以下同),中根遍历是2415736,则该二叉树的后根遍历是()。 A.4257631 B.4275631 C.7425631 D.4276531

NOIP2017_提高组复赛试题day2

CCF全国信息学奥林匹克联赛(NOIP2017)复赛 提高组 day2 (请选手务必仔细阅读本页内容) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz, 内存4G,上述时限以此配置为准。 4、只提供Linux格式附加样例文件。 5、提交的程序代码文件的放置位置请参照各省的具体要求。 6、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。

1.奶酪 (cheese.cpp/c/pas) 【问题描述】 现有一块大奶酪,它的高度为h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞。我们可以在这块奶酪中建立空间坐标系,在坐标系中,奶酪的下表面为z=0,奶酪的上表面为z=h。 现在,奶酪的下表面有一只小老鼠Jerry,它知道奶酪中所有空洞的球心所在的坐标。如果两个空洞相切或是相交,则Jerry可以从其中一个空洞跑到另一个空洞,特别地,如果一个空洞与下表面相切或是相交,Jerry则可以从奶酪下表面跑进空洞;如果一个空洞与上表面相切或是相交,Jerry则可以从空洞跑到奶酪上表面。 位于奶酪下表面的Jerry想知道,在不破坏奶酪的情况下,能否利用已有的空洞跑到奶酪的上表面去? 空间内两点P1(x1,y1,z1)、P2(x2,y2,z2)的距离公式如下: dist(P1,P2)=√(x1?x2)+(y1?y2)+(z1?z2) 【输入格式】 输入文件名为cheese.in。 每个输入文件包含多组数据。 输入文件的第一行,包含一个正整数T,代表该输入文件中所含的数据组数。 接下来是T组数据,每组数据的格式如下: 第一行包含三个正整数n,h和r,两个数之间以一个空格分开,分别代表奶酪中空洞的数量,奶酪的高度和空洞的半径。 接下来的n行,每行包含三个整数x、y、z,两个数之间以一个空格分开,表示空洞球心坐标为(x,y,z)。 【输出格式】 输出文件名为cheese.out。 输出文件包含T行,分别对应T组数据的答案,如果在第i组数据中,Jerry能从下表面跑到上表面,则输出“Yes”,如果不能,则输出“No”(均不包含引号)。

NOIP2007初赛提高组试题和答案

第十三届全国青少年信息学奥林匹克联赛初赛试题 (提高组Pascal语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、单项选择题(共10题,每题 1.5分,共计15分。每题有且仅有一个正确答案.)。 1.在以下各项中。()不是CPU的组成部分。 A.控制器 B.运算器 C.寄存器 D.主板 E.算术逻辑单元(ALU) 2.在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。 A.二叉树 B.多叉树 C.哈希表 D.B+树 E.二维表 3.在下列各项中,只有()不是计算机存储容量的常用单位。 A.Byte B.KB C.MB D.UB E.TB 4.ASCII码的含义是()。 A.二—十进制转换码 B.美国信息交换标准代码 C.数字的二进制数码 D.计算机可处理字符的唯一编码 E.常用字符的二进制编码 5.在Pascal语言中,表达式(23or2xor5)的值是() A.18 B.1 C.23 D.32 E.24 6.在Pascal语言中,判断整数a等于0或b等于0或c等于0的正确的条件表达式是() A.not((a<>0)or(b<>0)or(c<>0)) B.not((a<>0)and(b<>0)and(c<>0)) C.not((a=0)and(b=0))or(c=0) D.(a=0)and(b=0)and(c=0) E.not((a=0)or(b=0)or(c=0)) 7.地面上有标号为A、B、C的3根细柱,在A柱上放有10个直径相同中间有孔的圆盘,从上到下次依次编号为1,2,3,……,将A柱上的部分盘子经过B柱移入C柱,也可以在B柱上暂存。如果B柱上的操作记录为:“进,进,出,进,进,出,出,进,进,出,进,出,出”。那么,在C柱上,从下到上的盘子的编号为()。 A.243657 B.241257 C.243176 D.243675 E.214375 8.与十进制数17.5625相对应的8进制数是()。 A.21.5625 B.21.44 C.21.73 D.21.731 E.前4个答案都不对 9.欧拉图G是指可以构成一个闭回路的图,且图G的每一条边恰好在这个闭回路上出现一次(即一笔画成)。在以下各个描述中,不一定是欧拉图的是:()。 A.图G中没有度为奇数的顶点 B.包括欧拉环游的图(欧拉环游是指通过图中每边恰好一次的闭路径)

noip2015普及组初赛试题+答案

NOIP2015第二十一届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2015年10月11日14:30~16:30 选手注意: 1、试题纸共有5 页,答题纸共有2 页,满分100 分。请在答题纸上作答,写在试题纸上的一律无效。 2、不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项) 1. 1MB 等于()。 A. 1000 字节 B. 1024 字节 C.1000 X 1000 字节 D. 1024 X 1024 字节 2. 在P C 机中,PENTIUM (奔腾)、酷睿、赛扬等是指()。 A.生产厂家名称 B.硬盘的型号 C. CPU 的型号 D.显示器的型号 3. 操作系统的作用是()。 A.把源程序译成目标程序 B.便于进行数据管理 C. 控制和管理系统资源 D.实现硬件之间的连接 4. 在计算机内部用来传送、存贮、加工处理的数据或指令都是以()形式进行的。 A. 二进制码 B.八进制码 C.十进制码 D.智能拼音码 5. 下列说法正确的是()。 A. CPU 的主要任务是执行数据运算和程序控制 B. 存储器具有记忆能力,其中信息任何时候都不会丢失 C. 两个显示器屏幕尺寸相同,则它们的分辨率必定相同 D. 个人用户只能使用W ifi 的方式连接到I nternet 6. 二进制数00100100 和00010100 的和是()。 A. 00101000 B. 01000001 C. 01000100 D. 00111000 7. 与二进制小数0.1 相等的十六进制数是() A. 0.8 B. 0.4 C. 0.2 D. 0.1 8. 所谓的“中断”是指()。 A. 操作系统随意停止一个程序的运行 B. 当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况的过程 C. 因停机而停止一个程序的运行 D. 电脑死机 9. 计算机病毐是()。 A. 通过计算机传播的危害人体健康的一种病毒 B. 人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合 C. 一种由于计算机元器件老化而产生的对生态环境有害的物质 D. 利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒 10. FTP 可以用于()。 A.远程传输文件 B.发送电子邮件 C.浏览网页 D.网上聊天 11. 下面哪种软件不属于即时通信软件()。 A. QQ B. MSN C.微信 D. P2P 12. 6 个顶点的连通图的最小生成树,其边数为()。 A. 6 B. 5 C. 7 D. 4 13. 链表不具备的特点是()。 A.可随机访问任何一个元素 B.插入、删除操作不需要移动元素 C. 无需事先估计存储空间大小 D. 所需存储空间与存储元素个数成正比 14. 线性表若采用链表存储结构,要求内存中可用存储单元地址() A.必须连续 B.部分地址必须连续 C. 一定不连续 D.连续不连续均可 15. 今有一空栈S,对下列待进栈的数据元素序列a,b,c,d,e,f 依次进行进栈,进栈,出栈,进栈,进栈, 。 出栈的操作,则此操作完成后,栈S的栈顶元素为() A. f B. c C. a D. b 16. 前序遍历序列与中序遍历序列相同的二叉树为()。 A. 根结点无左子树的二叉树 B. 根结点无右子树的二叉树 C. 只有根结点的二叉树或非叶子结点只有左子树的二叉树

相关文档
最新文档