ACM杯比赛往年试题集锦Word格式.docx

上传人:b****6 文档编号:16186654 上传时间:2022-11-21 格式:DOCX 页数:16 大小:27.58KB
下载 相关 举报
ACM杯比赛往年试题集锦Word格式.docx_第1页
第1页 / 共16页
ACM杯比赛往年试题集锦Word格式.docx_第2页
第2页 / 共16页
ACM杯比赛往年试题集锦Word格式.docx_第3页
第3页 / 共16页
ACM杯比赛往年试题集锦Word格式.docx_第4页
第4页 / 共16页
ACM杯比赛往年试题集锦Word格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

ACM杯比赛往年试题集锦Word格式.docx

《ACM杯比赛往年试题集锦Word格式.docx》由会员分享,可在线阅读,更多相关《ACM杯比赛往年试题集锦Word格式.docx(16页珍藏版)》请在冰豆网上搜索。

ACM杯比赛往年试题集锦Word格式.docx

每行第一个单词前的空格数不能少于最后一个单词后的空格数,同时前者最多比后者多1。

文本对齐到行的两段边界。

只包含一个单词的行和最后一行左对齐。

不要求左对齐的行有一个特殊的方式来插入空格。

相邻的单词之间可以有多个空格。

对于同一行上两个“空隙”来说,左边不能比右边的窄,同时又不能比右边多2个或以上的空格。

你的程序用贪心的方式工作,也就是说,尽量多的单词应该被放入第一行,然后尽量多的单词应该被放入第二行,如此类推。

行的宽度在你的程序里固定为75个字符。

输入

输入只包含一组占据多行的测试数据。

第一行包含“L”、“R”、“C”和“J”之中的一个字母,分别代表一些文本要被左对齐、右对齐、居中或两边对齐显示。

文本的单词在接下来最多五行中。

同一行中的单词至少被一个空格分隔。

单词只包括ASCII代码在33和126之间的字符,长度小于75个字符。

输出

输出你的小程序产生的对齐显示后的文字。

样例输入

J

Manyyearslater,ashefacedthefiringsquad,ColonelAurelianoBuendiawastoremember

thatdistantafternoonwhenhisfathertookhimtodiscoverice.

样例输出

GlobalNo.

∙Submit

∙Status

∙Clarify

B:

二项式系数

294

53

二项式系数C(n,k)因它在组合数学中的重要性而被广泛地研究。

二项式系数可以如下递归的定义:

C(1,0)=C(1,1)=1;

C(n,0)=1对于所有n>

0;

C(n,k)=C(n−1,k−1)+C(n−1,k)对于所有0<

k≤n。

给出n和k,你要确定C(n,k)的奇偶性。

输入包含多组测试数据。

每组测试数据一对整数n和k(0≤k≤n<

231),占据独立一行。

文件结束符(EOF)表示输入结束。

对每组测试数据,输出一行,包含一个“0”或一个“1”,即C(n,k)除以2的余数。

11

10

21

1

GlobalNo

C:

上下文无关语言

5

1

上下文无关文法是一种强大的描述语言的方法。

许多编程语言的语法,包括在这个在线评测系统上提供了编译器的C、C++、Java和Pascal,都是用上下文无关文法指定的。

在这个题目中,我们用一种生成式的观点来看待上下文无关文法。

一个上下文无关文法由一组用以改写符号串的生成规则组成。

每一条生成规则都有这样的形式:

V→w

其中V是一个符号,w是一个符号串。

符号被分成终结符号和变元两种。

在上面的规则里,V必须是一个变元,而w可以包含变元和/或终结符号。

“上下文无关”表达出这样一个事实:

V总是可以被替换成w,无论它在什么上下文中出现。

在所有变元中,有一个被指定为开始变元。

利用一个上下文无关文法生成一个串,首先要从包含单个开始变元的串开始,连续和任意得应用规则改写串,直到只剩下终结符号。

例如,字母表只包含z,开始变元是S,有下列规则:

1.S→CB

2.S→ZZ

3.A→CB

4.A→ZZ

5.B→ZZ

6.C→BA

7.Z→z

那么我们从S开始,然后选择一个规则来应用。

如果我们选择规则1,就将S替换成CB,得到串CB。

然后,如果我们选择规则6,就将C替换成BA,得到串BAB。

如果我们现在选择规则4,就将A替换成ZZ,得到串BZZB。

我们可以用符号来更简洁的表示这一系列选择:

S⇒CB⇒BAB⇒BZZB⇒ZZZZB⇒ZZZZZZ⇒zZZZZZ⇒zzZZZZ⇒zzzZZZ⇒zzzzZZ⇒zzzzzZ⇒zzzzzz。

这个文法的语言就是所有由一个奇数的两倍那么多个z组成的串的集合。

给出一个上下文无关语言和一些串,判定这些串是否属于这个文法的语言。

为简洁其见,我们将上下文无关文法中所有“→”左边的变元相同的的规则组合到一起。

例如,我们将下面三条规则

S→u

S→v

S→w

组合成

S→u|v|w

上下文无关文法用一种称为Chomsky范式的特殊形式给出。

用Chomsky范式给出的上下文无关文法只包含如下形式的规则:

A→BC

A→a

其中a是任意终结符号,A、B、和C是任意变元,但B和C不能是开始变元。

Chomsky范式还允许规则S→ε,其中S是开始变元,ε表示空串,使得上下文无关文法可以产生空串。

在这个题目中我们忽略这种情况。

输入用Chomsky范式给出一个上下文无关文法和不超过50个串。

我们用单个小写字母作为终结符号,当个大写字母作为变元。

S总是被看作开始符号。

文法用若干行给出。

每一行包含按上述方式组合成的同一个变元的生成规则。

“→”将会被替换成“->

”。

不是所有可能的变元都会在文法中出现,但每个出现的变元都会有至少一条规则。

包含单个“#”的一行表示文法的结束。

在文法后面,每行包含一个串。

当再不能找到任何串时输入结束。

空格和空行不会在输入中出现。

为每个串输出一行。

如果一个串属于给定的上下文无关文法的语言,输出“YES”(不包含括号),否则输出“NO”(不包含括号)。

S->

CB|ZZ

A->

B->

ZZ

C->

BA

Z->

z

#

zzzzzz

a

YES

NO

D:

钻石游戏

33

16

一个钻石游戏是在图1所示的一个分割成数个面的六边形上进行的。

在这个题目里,分隔出来的面按照图中所示方式进行标号。

如果两个面公用一条边,那么成它们为相邻面。

那么,偶数编号的面就有三个相邻面,奇数编号的面只有两个相邻面。

在游戏进行中的任何时刻,七个面中的六个里会有一个唯一的1到6之间的数字,剩下的一个面则是空的。

游戏中的一步就是将一个数字从一个面移动到一个空相邻面。

从任意开始状态出发,通过一系列移动可以让游戏的状态变成如图2、3所示之一。

你的任务就是计算从开始状态出发到达图2中的状态最少需要多少步。

第一行包含一个整数N(0≤N≤5,040),测试数据的数目。

接下来N行每行包含{0,1,2,3,4,5,6}的一个排列,描述游戏的一个开始状态。

排列中的第i个数字表示标号为i−1的面上的数字。

零表示一个面是空的。

对每组测试数据,输出从开始状态到达图2所示状态的最少步数。

如果这是不可能的,输出“-1”。

3

1324506

2410653

0123456

10

-1

E:

边配对

10000ms

0

给出一个有n个顶点、m条边的简单无向连通图,其中m为偶数。

求一个边的一个配对,使得每一对边共用一个顶点。

输入包含一组测试数据。

第一行包含两个整数n和m(3≤n≤20,000,2≤m≤100,000,m是偶数),表示图的大小。

接下来m行,每行包含一对整数a和b,表示一条边(a,b)。

所有顶点从1到n标号。

如果配对存在,输出m⁄2行,每行依次包含三个整数a、b和c,表示两条边(a,b)和(b,c)被配成一对。

如果不存在配对,那么输出“NO”。

710

12

13

24

34

45

46

57

67

25

36

124

134

452

463

576

提示

样例的图示:

F:

足球赛

31

3

NJU和PKUACM-ICPC队的足球迷们打算进行一场足球赛。

因为frkstyc在运动方面相当不济,所以当裁判(Ikki说:

“这是句大实话。

”)。

但是因为他们找不到足够的人来凑足两个11人的队伍,他们决定来玩一个修改版本的点球决胜!

在通常的点球决胜里,球在罚出之前一定要放在禁区里一个划定的点上。

但是对这些球迷来说,这个队守门员未免太没有挑战性了。

所以现在允许主罚点球的球员对球的位置有更多的选择——在一条事先划定的线段上的任意位置都可以。

球员总是想仔细选择球的位置,使得球门对球的张角尽可能地大,那样就有更大的机会把球放进网窝里。

在现实中,要让这个张角真的达到最大几乎是不可能的,因为人的感知看起来总是更能应付模糊的事情,而不是精确的东西。

但是对于你,一个程序设计大赛的选手,应该不是什么难题,因为你有眼前的计算机来帮忙,只要你得到了球门的那条摆球的线段的位置的精确描述。

每组测试数据只有一行,包含四个点A、B、U和V的坐标。

点的坐标用(x,y)的形式给出,由空格分隔。

四个点互不重合。

A和B描述球门。

两根门柱分别位于A和B。

站在A处沿矢量AB→方向看时,球门朝向右侧。

U和V描述摆球的线段。

站在U处沿矢量UV→方向看时,A和B都在左侧。

线段的一部分有可能在球场之外,这部分照样允许摆球。

线段的一部分可能在球门后面,这部分是不允许摆球的。

点的坐标都由不超过10,000的非负整数组成。

对每组测试数据,在线段UV上找一个点P,使得在P处球门AB可以从正面看见,而且角∠APB最大。

如果这样的P不存在,那么认为答案是0。

用度数输出这个角,精确到小数点后三个数字。

允许有0.001°

的误差。

(36,89)(79,97)(11,88)(72,32)

56.167

BA被延长到交UV于R。

当球被放在UR时它处在球门后面,因此是不允许的。

但是它可以放在RV上的任意位置。

在所有的位置中,P使∠APB最大。

P的坐标大约是(42.3679,59.1950)。

G:

Lab杯

142

84

“Lab杯”乒乓球赛就要在PKU的实验室之间举行了。

人工智能实验室的学生都是乒乓球的狂热分子,都强烈希望代表实验室去比赛。

但是有余名额限制,他们之中只能由一个人被选作代表。

为了让选择的过程公平,他们决定打一次单循环赛,每一对学生之间都打一场五局三胜的比赛。

赢得最多比赛的人就将代表实验室去比赛。

现在Ava手里有一份表,表里面记录了每一场比赛的比分。

她应该让谁去比赛?

第一行包含n(2≤n≤100),实验室里学生的数目。

接下来给出一个n×

n矩阵A。

矩阵的每一个元素都是0、1、2、3中的一个。

第i行第j列的元素aij是第i个学生在和第j个学生的比赛中赢的局数。

aij和aji(i≠j)正好有一个是3,另外一个小于3。

矩阵的所有对角线元素都是0。

输出赢了最多比赛的学生的编号。

如果有平分,选择编号最小的。

4

0032

3031

2202

3330

H:

区间

12

2

LogLoader是一家专门提供日志分析产品的公司。

Ikki在做毕业设计的同时,还忙于在LogLoader做实习。

在他的工作里,有一项是要写一个模块来处理时间区间。

这个事情一直让他感到很迷糊,所以现在他很需要你帮忙。

在离散数学里面,你已经学习了几种基本的集合运算,具体地说就是并、交、相对补和对称差。

它们自然地也适用于区间这种特殊的集合。

作为你的快速参考,它们可以总结成下表:

运算

记号

定义

A∪B

{x:

x∈A或x∈B}

A∩B

x∈A并x∈B}

相对补

A−B

x∈A但是x不属于B}

对称差

A⊕B

(A−B)∪(B−A)

Ikki已经把他的工作里出现的区间运算抽象成一个很小的编程语言。

他想你为他实现一个解析器。

这个语言维护一个集合S。

S一开始是空集,并根据下列命令被修改:

命令

语义

UT

S←S∪T

IT

S←S∩T

DT

S←S−T

CT

S←T−S

ST

S←S⊕T

输入包含一组测试数据,由0到65,535条命令组成。

每条命令占一行,形式如下:

XT

其中X是‘U’、‘I’、‘D’、‘C’和‘S’中的一个,T是一个区间,形式为(a,b)、(a,b]、[a,b)和[a,b]之一(a,b∈Z;

0≤a≤b≤65,535),取它们通常的意义。

命令按在输入中出现的顺序执行。

以一组不相交区间的并的形式输出在最后一条命令执行之后的集合S。

这些区间在一行内输出,由单个空格分隔,按端点的升序排序。

如果S是空集,输出“emptyset”。

U[1,5]

D[3,3]

S[2,4]

C(1,5)

I(2,3]

(2,3)

I:

拼装模型

276

60

Dzx从日本回来了,并为TN准备了礼物----一个恐龙模型。

TN想把它尽快拼好,但是由于模型很庞大,TN又实在比较懒,所以他希望你为他寻找一个最节省时间的拼装方案。

模型是由N个零件组成的,每次TN可以选取两个零件拼装在一起来组成一个新的零件,直到得到完整的模型。

由于零件的复杂程度不同,TN每次拼装所需要的时间也是不同的,对于两个零件A和B,假设他们的复杂程度分别为a和b,则TN要将这两个零件拼装在一起所需要的时间为a+b,而这由两个零件所组成的新零件的复杂程度为a+b。

现在TN已经统计出了每个零件的复杂程度,你能告诉他最快的拼装方发需要多少时间么?

Line1:

N(1<

=N<

=10000),零件数目

Line2:

NIntegers,表示每个零件的复杂程度

最快的拼装方案所需要的时间

129

15

J:

登山

225

117

五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。

同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。

队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?

N(2<

=1000)景点数

N个整数,每个景点的海拔

最多能浏览的景点数

8

186186150200160130197220

K:

选课

155

66

教务网站如期的在选课之日出问题了,这次的问题是登陆窗口的验证码无法显示了,同学们只能靠猜验证码来登陆选课。

教务的登陆系统刚刚经过改进,改进后的验证码均为1..N的一个排列。

一般的同学们在试验的时候都是按照所有排列的字典序逐个试验,但是TN发掘这样试验很乏味,所以他决定每次尝试前一个排列后面的第M个排列。

但是一段时间之后他发现,寻找一个排列后面的第M个排列并不是一件容易的事情,所以他希望你帮助他。

=10000)

M(1<

=M<

=100)

Line3:

1..N的一个排列

所求的排列

5

12345

12453

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

当前位置:首页 > 小学教育 > 语文

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

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