历届程序设计acm试题.docx

上传人:b****8 文档编号:9656725 上传时间:2023-02-05 格式:DOCX 页数:17 大小:90.81KB
下载 相关 举报
历届程序设计acm试题.docx_第1页
第1页 / 共17页
历届程序设计acm试题.docx_第2页
第2页 / 共17页
历届程序设计acm试题.docx_第3页
第3页 / 共17页
历届程序设计acm试题.docx_第4页
第4页 / 共17页
历届程序设计acm试题.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

历届程序设计acm试题.docx

《历届程序设计acm试题.docx》由会员分享,可在线阅读,更多相关《历届程序设计acm试题.docx(17页珍藏版)》请在冰豆网上搜索。

历届程序设计acm试题.docx

历届程序设计acm试题

搜集的南开大学的ACM试题与你共享

[A]  南开大学Onlinejudge在线判题系统

A.Lucy的新难题

时间限制:

2秒 内存限制:

32000KB

不知不觉,南开大学第三届“我为程序狂”又要拉开帷幕了。

这天,Lucy也来到南开大学ACM协会,与大家共同欢庆NKPC的三周岁的日子。

谈笑间,ACM协会的主席拿了圆形的生日蛋糕。

大伙开心地唱完了生日歌,一起吹灭了蜡烛。

要分蛋糕了,大家都很兴奋。

本着公平的原则,每位到场的人员都要在蛋糕上切一刀。

ACM协会的主席事先知道有n位朋友会参与这个欢庆宴会。

为了方便大家切蛋糕,主席在订蛋糕的时候就嘱咐在蛋糕的边缘布置上2n朵小花。

 

每个人切蛋糕都会从蛋糕的边缘的一朵小花笔直地切到蛋糕的另一端的小花,来表达自己对NKPC的祝福。

为了尊重其他同学,每个人在切蛋糕一定不会和蛋糕上已有的切痕相交,也不会从别人已切过的小花作为切蛋糕的起点或终点。

同时,每位同学在切蛋糕的时候,都要保证后面所有的同学都能够按照上述的规则切蛋糕。

这样,蛋糕上就留下n条切痕。

Lucy眨巴眨巴眼睛,问,要是不考虑切蛋糕的先后顺序和谁切的哪一刀,这蛋糕切完了共有多少种切法呢?

大家听了呵呵一笑,说,那就把这个问题留给NKPC3,作为《Lucy的新难题》吧。

相信聪明的你,一定能够帮Lucy解答她的难题的,对吗?

输入(请使用标准输入输出,而不要读写文件)

输入包括多组测试数据,你应当处理到输入结束为止。

每组输入数据中,都只有一行,仅包含一个正整数n,且0

 

输出(请使用标准输入输出,而不要读写文件)

  对于每组输入数据,输出两行。

对于第i组输入数据,输出的第一行为”Casei:

”,输出的第二行为切蛋糕的方法数。

样例输入

样例输出

1

2

Case1:

1

Case2:

2

[B]  南开大学Onlinejudge在线判题系统

B.保龄球

时间限制:

2秒 内存限制:

32000KB

南开大学ACM协会的一个元老毕业后,开了家保龄球馆。

他需要为他的保龄球馆的计算机写一个记分的程序。

一局(GAME)保龄球分为10格,每格里有两次投球机会,如在第一次投球时没能全中,就有需要投第二球。

每一格可能出现三种情况:

1.失球(MISS)

无论何种情况,在一格的两次投球时,未能击倒10个瓶,此格的分数为击倒的瓶数。

如果一次击球中未击倒一个瓶,则用一个’-’标记。

2.补中(SPARE)

要一次击倒十个瓶子并非那么容易的!

如果在第一次掷球后,你还有一次机会来击倒该格第一球所留下的情致。

当第二次投球击倒该格第一球余下的全部瓶子,称为补中,用一个‘/’符号表示。

补中的记分是10分加上下一次投球击倒的瓶数。

3.全中(STRIKE)

当每一格的第一次投球击倒全部竖立的十个瓶时,称为全中,用一个(×)符号表示。

全中的记分是10分(击倒的瓶)加该球员下两次投球击倒的瓶数。

但在第十格中情况比较特殊:

(1)如第二次投球未补中,则第十格得分为第九格得分加上第十格所击倒瓶数。

(2)如第二次投球补中,则追加一次投球机会,第十格得分为第九格得他加上10加上追加一次投球击倒瓶数。

(3)如第一球为全中,则追上加二次投球机会,第十格得分为第九格得分加上10加追加二次投球击倒的瓶数。

因此从第一格到第十格的两次追加投球,都为全中,则为12个全中,得分为满分300分。

 

输入(请使用标准输入输出,而不要读写文件)

输入包括多组测试数据,你应当处理到输入结束为止。

每组输入数据中,都只有一行,包含一局的记分符号,相邻的两个符号之间以一个空格隔开。

记分的符号仅包括‘-’(不含引号)、‘/’(不含引号)、’X’(不含引号)及阿拉伯数字1到9。

输出(请使用标准输入输出,而不要读写文件)

  对于每组输入数据,输出两行。

对于第i组输入数据,输出的第一行为”Casei:

”,输出的第二行为10个整数,表示每格的累计得分。

相邻的两个得分以一个空格隔开。

样例输入

样例输出

XXXXX5/71--XXXX

44332217712-9/22632/1

Case1:

306090115135152160160190220

Case2:

8141826343648526172

[C]  南开大学Onlinejudge在线判题系统

C.计算机硬件评分系统

时间限制:

2秒 内存限制:

32000KB

  小C听说微软新推出的一款操作系统WindowsVista可以对电脑的配置进行评分,很感兴趣。

由于小C对硬件软件方面都很了解,就通过一系列的市场调查与实践,制作了一款自己的计算机硬件评分系统。

此系统可以对CPU、内存、硬盘、主板、显卡五部分分别进行评分,分数为不超过100的正整数,并以这五个分数中的最低分作为对计算机的总体评分。

同寝室的小D打算最近购置一台新电脑,他请小C给他当参谋,小C就提供了一些当前的CPU、内存、硬盘、主板、显卡五种硬件的品牌、价格以及每个硬件由他所制作的系统所评价出来的分数。

小D准备至多用N元来购买这五种硬件并且他还希望能够得到一台电脑有尽量高的总体评分。

作为寝室长的你主动要写一个程序来帮助小D购买电脑。

 

输入(请使用标准输入输出,而不要读写文件)

第一行是一个正整数,不大于50000,表示上述的N。

之后共有五部分的数据,分别代表CPU、内存、硬盘、主板、显卡部分的资料描述。

每一部分的第一行均为一个正整数,表示资料中所提供的这种硬件品种数目M。

下面M行每一行都描述了一个品种的情况,包括两个整数,以空格隔开。

第一个整数介于1于10000,表示该品种的价格,第二个正整数表示该硬件所得到的分数。

假定所列出的硬件相互都是兼容的。

输出(请使用标准输入输出,而不要读写文件)

输出两行,每行一个正整数。

第一行表示所购电脑的总体评分最大值。

第二行表示要购买上述总体评分的电脑所需最少花费。

如果小D的钱不足以购置这些硬件,则输出的两个数字均为0

样例输入

样例输出

3000

4

88080

40060

49572

24055

3

63578

34559

78586

2

80088

60371

2

49972

59079

3

58876

99984

28951

71

2820

[D]  南开大学Onlinejudge在线判题系统

D.朋友们的距离

时间限制:

2秒 内存限制:

32000KB

要放假了,考完了所有试就等着上火车回家的Butterfly0923面对着自己心爱的计算机,无聊的逛着我爱南开BBS,眼看着在线好友列表的长度一天天减少。

“来自”一栏中的IP都还是校内的,大多以10开头。

Butterfly0923看到大部分人跟自己同在21宿,还有15宿的老乡、13宿的狐朋狗友们、西区的研究生、12宿的音乐狂人和8宿的可爱小女生。

虽然现在大家仅仅相隔几百米,但是很快彼此将远隔万水千山,分散在祖国各地。

如果那时大家一起上线,各地IP大展览,一定有趣,Butterfly0923这样想。

不过祖国这么大,不知道大家到底相距多远。

于是Butterfly0923给所有在线的ID寄语信鸽,询问他/她的家乡与学校之间的距离,他想知道自己的朋友中谁离学校最远。

 

Butterfly0923知道自己的家距学校520km,seaeagle也知道,所以他回信说:

我家离学校的距离比你的四倍还多200km。

不过doraemonok不知道,他比较务实,直接回信说:

12km,公交1hour。

迷糊的Butterfly0923想了想,觉得seaeagle比较远一点。

但是随着问的人越来越多,问题变得复杂起来。

unusualwater说:

我的距离是你的十三分之一。

aliao说:

我刚问过gnr,你们的旅途合在一起比我少194km。

而gnr老师的回信说:

我的路程正好是你的两倍。

这回,Butterfly0923算了好大一会,才知道aliao最远。

Butterfly0923最后寄语信鸽了爱好编程的你,不过不是问距离,他告诉你他从各个ID得到的信息,希望你能告诉他最远的地方有多少公里,是谁在那里。

输入(请使用标准输入输出,而不要读写文件)

 输入数据有多组。

每组数据的第一行是在线ID的数目n,Butterfly0923的好友列表里一共26个ID,所以n不会超过26。

接下来n行是这n个在线ID,每行一个。

按照我爱南开BBS站的规定,ID由2-12个英文字母组成,大小写不敏感。

再往下n行是从各人回信中得到的信息。

方便起见,Butterfly0923把每条信息写成等式的形式。

等号两边有一些项,每一项都是num*ID的形式,num是一个正整数,没有符号,多项之间以加号分隔,最后一项可能是一个常数。

Butterfly0923自己也可能出现在等式中,注意它不是一个ID——它太长了。

Butterfly0923保证在一个等式中不会出现相同的ID,每个人的距离(如果能算得出的话)都是整数。

所有ID和等式中都不会出现任何前导、后缀以及符号两侧的空格。

 

输出(请使用标准输入输出,而不要读写文件)

对于每一组输入,首先输出一行Case#,这里#是按组从1开始的编号。

如果朋友们给Butterfly0923的信息不足以确定全部人的距离,就在第二行输出“I’mnotsureaboutsomeone’sdistance.”否则第二行输出你计算出的最远距离,第三行输出跟最远距离对应的ID,如果这样的ID不止一个,按照它们在输入中出现的顺序每行输出一个。

 

样例输入

样例输出

2

seaeagle

doraemonok

1*seaeagle=4*Butterfly0923+200

1*doraemonok=12

3

unusualwater

aliao

gnr

13*unusualwater=1*Butterfly0923

1*aliao=1*Butterfly0923+1*gnr+194

1*gnr=2*Butterfly0923

Case1:

2280

seaeagle

Case2:

1754

aliao

aliao

提示

⒈留意n的下限。

⒉ID不区分大小写,但是大写字母是允许的。

⒊常数项只会出现在最右边。

⒋等式中的Butterfly0923实际上相当于常数,注意它可能会重复出现。

⒌注意并列最远的情形。

⒍注意不能确定的情形。

⒎虽然系数及最后结果都是整数,但是计算过程中可能需要浮点数。

[E]  南开大学Onlinejudge在线判题系统

E.羽毛球轨迹估算

时间限制:

2秒 内存限制:

32000KB

Butterfly0923喜欢打羽毛球,尽管打得不是很好。

某节杨明老师的羽毛球课上,刚刚打赢了Butterfly0923的英语系老陈得意的问:

“嘿,你知道羽毛球的英文叫做什么?

”“嗯……featherball吧……”“No,badminton.Doyouknowwhy?

这是羽毛球起源的地方,是英国的一个小镇。

”这时杨老师开始讲课:

“大家看,羽毛球的飞行轨迹是很有特点的,跟排球篮球足球不一样,羽毛球向上升到最高点,然后几乎垂直落下来。

 

Butterfly0923突然对老陈说:

“告诉我初始的速度,高度和角度,我可以告诉你这个球可以飞多远。

”Butterfly0923的想法是这样的:

假定飞行的羽毛球只受到竖直向下的重力G,和与飞行速度v方向相反的空气阻力f,且空气阻力的大小f=kv,其中k为常数。

设t=0时球具有初速度v0,速度与水平方向夹角为α,击球高度为y0。

比如,当k=0.018时,一只重10g的羽毛球在离地面2m的地方斜向上与水平方向成45°角,以20m/s的速度飞出,按照这个模型,经过2.34秒,羽毛球会落在大约7.74m远的地方,如下图所示:

 

Butterfly0923对自己的模型还是很满意的,他正在尝试以不同的角度和力度打一些不同的球,老陈帮忙测量实际距离。

OK,你的任务是计算一下按照这个模型,Butterfly0923打出去的球会落在离他多远的地方。

输入(请使用标准输入输出,而不要读写文件)

输入由多组测试数据组成,每组测试数据一行,请一直处理到文件结束。

每组数据由五个数组成。

第一个数是击球的角度α,杨老师刚刚教了Butterfly0923如何扣杀,所以α可能是[-90,90]内的任何整数。

接下来是球的初速v0(m/s)、击球点的高度y0(m)、球的质量m(kg)和阻力系数k,都是非负的浮点数,m≥0,g=9.8N/kg。

输出(请使用标准输入输出,而不要读写文件)

对于每一组测试数据,输出两行,第一行为“Case#:

”,这里#是按组从1开始的编号,第二行为你计算出的落地距离,保留两位小数。

样例输入

样例输出

452020.010.018

Case1:

7.74

提示

⒈注意输入数据的边界,有些情况可能需要特殊处理。

⒉记得舍入到小数点后两位。

[F]  南开大学Onlinejudge在线判题系统

F.找出公共区域

时间限制:

2秒 内存限制:

32000KB

Betty喜欢玩剪纸。

现在她有两张已经剪好的凸多边形需要粘在一起。

她打算在两张纸的公共区域涂满浆糊,你能计算出这个公共区域有多大吗?

 

输入(请使用标准输入输出,而不要读写文件)

 输入由两部分组成,每部分的第一行为一个整数介于3和30之间,表示该凸多边形的顶点数目。

下面各行每行包含两个实数,表示凸多边形顶点的横纵坐标。

实数的小数部分为六位且绝对值均小于1000。

顶点顺序按逆时针给出。

输出(请使用标准输入输出,而不要读写文件)

  请输出一个包含两位小数的实数,表示两个凸多边形的公共区域面积。

样例输入

样例输出

4

1.500000-0.500000

3.5000001.500000

1.5000003.500000

-0.5000001.500000

4

0.0000000.000000

3.0000000.000000

3.0000003.000000

0.0000003.000000

7.00

[G]  南开大学Onlinejudge在线判题系统

G.游戏

时间限制:

2秒 内存限制:

32000KB

  我们在休闲娱乐的时候常常会去玩一些益智小游戏,像扫雷、祖玛、俄罗斯方块之类的恐怕已经没有几个人没玩过了吧。

像这样的游戏能让我们在学习的紧张过后得到一点放松,而且又能活动一下脑子。

现在许多RPG风格的游戏也逐渐的加入一些小游戏的元素来丰富游戏内容,像GBA游戏《被狙击的名侦探》,PC游戏《双星物语》等等就都出现了类似于下面这种样式的小游戏:

在一个n×n的方格中,每个方格有一个棋子,棋子或为黑色、或为白色,如图中所示。

现在对棋盘进行操作,每步操作只能选中一个方格,之后这个方格及其上下左右四个相邻的方格(如果有的话)中的棋子均变为相反的颜色。

游戏开始时给定棋盘A和棋盘B,请你用有限步操作将棋盘A变为棋盘B。

你能做到吗?

这里不需要你指出如何操作,只需输出需要进行的最少操作次数。

例如对下图,只需对棋盘A左上角的格子进行一次操作即可。

 

输入(请使用标准输入输出,而不要读写文件)

  第一行为一个整数n(2<=n<=5),用来说明棋盘的大小。

下面一行中的整数m(1<=m<=50)表示测试用例的个数。

每个测试用例包含2*n行,前n行用来描述棋盘A的状态,后n行用来描述棋盘B的状态。

1表示黑棋子,0表示白棋子,两数字之间用空格隔开。

输出(请使用标准输入输出,而不要读写文件)

  输出包含2*m行,每一个测试用例占两行且第一行形如"Casei:

"。

如果存在一种操作方法满足要求,则第二行输出为最少操作次数,否则为"NoSolution!

样例输入

样例输出

2

3

10

01

01

10

00

00

11

11

11

10

10

00

Case1:

4

Case2:

4

Case3:

2

[H]  南开大学Onlinejudge在线判题系统

H.帅小伙子和俊俏姑娘

SpecialJudge

时间限制:

2秒 内存限制:

32000KB

南开大学冰火舞蹈团是一个云集帅小伙子和俊俏姑娘的地方。

舞蹈团经常有演出任务。

舞蹈团的团长需要给参加排练的同学做合适的舞伴配对,从而使整个节目能发挥出舞蹈团的较好的配合水平。

现在,有一个演出任务,需要n名帅小伙子与n名俊俏姑娘男女配对演出。

当然,每个帅小伙子只能和一个俊俏姑娘配对成为舞伴。

这n名帅小伙子,每个人对这n名俊俏姑娘在心里都有不同的排名,且任意两个姑娘在一个帅小伙子心目中的排名一定是不同的;同样,这n名俊俏姑娘每个人对这n名帅小伙子也都有不同的排名,且任意两个小伙子在一个俊俏姑娘心目中的排名一定是不同的。

根据舞蹈团梁团长的经验,如果一个配对组合,使得某位帅小伙子A的舞伴a在这位小伙子心目的排名不如另一位俊俏姑娘b,且这位俊俏姑娘b的舞伴B在她的心目中的排名不如这位帅小伙子A,那么帅小伙子A和俊俏姑娘b在排练的过程中就会有些情绪,演出效果可能就不大好。

现在,舞蹈团的梁团长听说你很聪明,想请你帮帮忙,在已知帅小伙子和俊俏姑娘们相互之间心目中的排名的前提下,告诉他是否存在一种合理的配对方案,使得所有的成员都能够在演出过程中不闹情绪?

如果存在,请你帮他设计一组方案来为这些帅哥、靓妹们进行舞伴配对。

 

输入(请使用标准输入输出,而不要读写文件)

输入包括多组测试数据,你应当处理到输入结束为止。

每组输入数据的第一行是一个正整数n,n≤50,表示有多少对舞伴。

接下来有n行,每行有n个正整数,它们介于1到n,且互不相同,其中第i行的第j列表示第i个姑娘对第j个小伙子的排名。

再接下来还有n行,每行也有n个正整数,它们也介于1到n,且互不相同,其中第i行的第j列表示第i个小伙子对第j个姑娘的排名。

输出(请使用标准输入输出,而不要读写文件)

  对于每组输入数据,输出两行。

对于第i组输入数据,输出的第一行为:

”Casei:

如果存在合适的配对方案,请输出的第二行输出一个由1到n之间互不相同的正整数组成的序列,相邻的两个正整数用一个空格隔开,第k个正整数表示第k个帅小伙子所配对的俊俏姑娘的编号,表示一种可行的配对方案;否则,请在输出的第二行输出”NoSolution!

”。

样例输入

样例输出

3

123

123

312

213

321

132

2

12

12

21

21

Case1:

231

Case2:

21

[I]  南开大学Onlinejudge在线判题系统

I.有趣的纸牌游戏

SpecialJudge

时间限制:

2秒 内存限制:

32000KB

南开大学ACM参赛队要到外地参加现场赛的时候,为了在火车上解乏,带了纸牌。

 

游戏的规则很简单,首先将纸牌中的大、小王取出;然后,在剩余的牌中,每次取出4张牌,并规定A代表1,J代表11,,Q代表12,K代表13。

而后,所有的玩家使用’+’、’-’、’*’、’/’、’(’、’)’将这四张牌所代表的数字连接起来,谁能够最快说出一种能够得到24的四则运算的表达式,或者最快确认这4张牌不可能组成结果为24的四则运算表达式谁就算赢。

当然,每张牌都必须要使用,且只能使用一次。

为方便起见,大家约定’-’只代表减号,不代表负号。

现在,你能设计一个程序,来赢取这个纸牌游戏的胜利吗?

输入(请使用标准输入输出,而不要读写文件)

输入包括多组测试数据,你应当处理到输入结束为止。

  每组输入数据只包括一行,这一行中有4个介于1和13的正整数(含1和13),代表这一轮游戏中所抽出的四张牌。

这些数之间以一个空格相隔开。

输出(请使用标准输入输出,而不要读写文件)

  对于每组输入数据,输出两行。

对于第i组输入数据,输出的第一行为:

Casei:

在输出的第二行,若按照游戏规则,这四张牌不能通过一个四则运算的表达式得到24,请输出:

NoSolution!

否则,请输出一个满足这样条件的表达式,允许带多余的括号。

例如,对于四张牌:

1 2 3 4,以下三种输出都是正确的:

(1+2+3)*4

(((1+2)+3)*4)

1*2*3*4

样例输入

样例输出

1234

1111

Case1:

(1+2+3)*4

Case2:

NoSolution!

[J]  南开大学Onlinejudge在线判题系统

J.自己当回裁判

时间限制:

2秒 内存限制:

32000KB

有的人认为,在程序竞赛中当裁判肯定比选手轻松。

其实未必。

为了让大家过一回当裁判的瘾,本次竞赛的最后一道题目就是让大家自己当一回裁判。

 

大家应该都接触过南开大学的在线判题系统()了吧。

相信细心地你应该注意到有的题目被标记上”SpecialJudge”的字样,比如,本次竞赛的第I题。

一般的题目,对于每组测试数据的输入,都会有唯一确定的输出。

这样,在线判题系统就可以对于能通过编译,并且在满足题目时间限制和内存使用等限制的条件下正常运行结束的程序进行判断输出是否和预计的输出完全一致,并给予相应的判断结果。

而标有”SpecialJudge”字样的题目,满足题目条件的结果可能并不唯一,这就需要裁判针对这个题目另外写一个程序,来判断程序的结果。

南开大学在线判题系统的评判结果一共有以下几种类型:

Accepted、WrongAnswer、Compiling、Judging、Rejudging、TimeLimitExceeded、MemoryLimitExceeded、FunctionLimitExceeded、RuntimeError、CompileError、OutputlimitExceeded、Presentat

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1