sairate c9f8710d03 sairate<sairate@sina.cn>
Signed-off-by: sairate <sairate@sina.cn>
2025-07-12 16:05:52 +08:00

304 lines
10 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NOI95试题
第一天 第一题 查阅单词
试题
一个文本文件仅含有英文字母和分隔符,分隔符包括空格、逗号、句号和换行符。除此
之外,该文件不含其它符号。一个单词的由一个或多个分隔符分隔的连续字母序列,例如:
下面是一个包含5个单词的文件
┏━━━━━━━━━━━━━━━━┓
_Student__must___have↓ ┃
┃↓ ┃
┃↓ ┃
┃a_book<EFBFBD>
┗━━━━━━━━━━━━━━━━┛
其中符号“_”为空格符“↓”为换行符<EFBFBD>”为句号。
文本文件中的第一个句子是从文件头到第一个句号间的字符序列(含句号), 除第一个句
子之外的所有句子都是由两个句号间的所有字符组成的序列(含后面的句号)。
编一程序,由键盘输入一个符合上述约定的文本文件名和一个单词, 计算该单词在该
文件中出现的次数,并输出包含该单词的所有句子(按句子在文件中的先后次序,依次输
出)。
注意:
①文件中每个单词长度不超过20个字母。
②判断单词是否相同时不区分大小写。例如ABC、Abc、
ABc、aBC、abc…都是同一个单词。
输入数据:
由键盘输入待查文本文件名和待查单词。
输出数据:
输入文件为output.txt
该文件第一行为该单词在文件中出现的次数。
从每二行开始是依先后次序输出的包含该单词的句子。
在输出句子时请注意:
①每个句子无论多长只占一行;
②原句中每一个换行符用一个空格符代替。
输入输出范例:
输入文件内容:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ __Every computer will have MsDos, Borland C Microsoft ┃
┃ Quick Basic. And Turbo Pascal. For the translati ons ┃
┃ the teamleaders will be provided with Microsoft Office ┃
┃ with MS Word and WordPerfect Information on directories┃
┃ and last instructions will be sent to you in the last ┃
┃ newsletter and distributed on the day before the first ┃
┃ contest day._Each student will have the opportunity ┃
┃ for some practice. On the equipment. ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
输出文件内容:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃2 ┃
┃__Every computer will have MsDos, Borland C Microsoft ┃
┃Quick Basic. ┃
┃_Each student will have the oppertunity for some practice.┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
第一天 第二题 石子合并
试题
在一个园形操场的四周摆放N堆石子N≤100现要将石子有次序地合并成一堆。规定
每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。
编一程序由文件读入堆数N及每堆的石子数
①选择一种合并石子的方案使得做N-1次合并得分的总和最小
②选择一种合并石子的方案使得做N-1次合并得分的总和最大。
例如图1所示的堆石子每堆石子数从最上面的一堆数起顺时针数
次为4 5 9 4。则次合并得分总和最小的方案为图2得分总和最大的方案为图3。
4 4 8 * *
4 5 4 5 -> * 5 -> * 13 -> * 22
9 9 9 9 *
图1 图2
总得分=8+13+22=43
4 4 4 *
4 5 -> 4 * -> 18 * -> 22 *
9 14 * *
图3
总得分=14+18+22=54
输入数据:
文件名由键盘输入,该文件内容为:
第一行为石子堆数N
第二行为每堆的石子数,每两个数之间用一个空格符分隔。
输出数据:
输出文件名为output.txt
从第1至第N行为得分最小的合并方案。第N1行是空行。从第N2行到第2N1行是得
分最大合并方案。
每种合并方案用N行表示其中第i行1≤i≤N表示第i 次合并前各堆的石子数(依
顺时针次序输出,哪一堆先输出均可)。 要求将待合并的两堆石子数以相应的负数表示,
以便标识。
输入输出范例:
┏━━━━━━━┓ ┏━━━━━━━━━┓
┃输入文件内容:┃ ┃输出文件内容: ┃
┠───────┨ ┠─────────┨
┃4 ┃ ┃-4
┃4 ┃ ┃-8-5
┗━━━━━━━┛ ┃-13
┃22 ┃
┃ ┃
┃4
┃4
┃-4-18 ┃
┃22 ┃
┗━━━━━━━━━┛
(图6.2-4)
第一天 第三题 最短编号序列
试题
表A和表B各含K(k≤)个元素元素编号从到k。两个表中的每个元素都是由
1组成的字符串。(不是空格)字符串的长度≤20。例如下面的两个表, 每个都含3个元
k
表a 表b
┏━━━━┯━━━━━┓ ┏━━━━┯━━━┓
┃元素编号│ 字符串 ┃ ┃元素编号│字符串┃
┠────┼─────┨ ┠────┼───┨
┃ 1 │1 ┃ ┃ 1 │111 ┃
┃ 2 │10111 ┃ ┃ 2 │10 ┃
┃ 3 │10 ┃ ┃ 3 │0 ┃
┗━━━━┷━━━━━┛ ┗━━━━┷━━━┛
对于表A和表B存在一个元素编号的序列分别用表A中的字符串和表B 中的字符
串去置换相应的元素编号,可得相同的字符串序列101111110,见下表:
┏━━━━━━━━━┯━━━━━┯━━━┯━━━┯━━┓
┃元素编号序列 │ 2 │ 1 │ 1 │ 3 ┃
┠─────────┼─────┼───┼───┼──┨
┃用表A的字符串替换 │10111 │ 1 │ 1 │10 ┃
┠─────────┼─────┼───┼───┼──┨
┃用表B的字符串替换 │ 10 │111 │111 │ 0 ┃
┗━━━━━━━━━┷━━━━━┷━━━┷━━━┷━━┛
对表A和表B具有上述性质的元素编号序列称之为SAB。对于上例SAB
编写程序从文件中读入表A和表B的各个元素 寻找一个长度最短的具有上述性质的
元素编号序列SAB
注意如果对于表A和表B不存在SAB即找不到相同元素编号序列对应有相同的长
度≤的由组成的字符串序列这时应输出“No Answer”无解
输入数据:
输入文件名由键盘输入,该文件
行为K的值
行至第K行为表A的内容依次是元素编号从到K的相应 0、1字符串);
第K2行至第2K行为表B的内容依次是元素编号从至K的相应字符串
输出数据:
输出文件名为OUTPUT.TXT该文件只有一行。或是SAB的值或是“No Answer ”(无
解时。sAB是元素编号序列输出时每个编号占一行。
输入输出范例:
┏━━━━━━━┓ ┏━━━━━━━┓
┃输入文件内容:┃ ┃输出文件内容:┃
┠───────┨ ┠───────┨
┃3 ┃ ┃2 ┃
┃1 ┃ ┃1 ┃
┃10111 ┃ ┃1 ┃
┃10 ┃ ┃3 ┃
┃111 ┃ ┗━━━━━━━┛
┃10 ┃
┃0 ┃
┗━━━━━━━┛
第一天第四题 “互邻”数码序列(已删除)
  N位由0和1组成的字符串A、B可分别表示为
  ANN-1…i…21
  BNN-1…i…21
其中, i0或1, i0或1
1≤i≤N, N≤15
如果存在某一位j(j∈1…N), 在该位上两串不同, 即j≠j, 而其余N-1位上的两串相同,
ii(i∈1…Ni≠j), 则称A、B两串“互邻”。
  比如在N4时, A1100, B1000, A、B 两串“互邻”, 而 C1100, D1010, C、D两
串不“互邻”。
编程要求:
寻找一个含有2N个上述01串的序列, 该序列满足以下要求:
① 组成该序列的每一个01串都与其它串不同;
② 第k个串与第k-1个串有“互邻”关系2≤k≤2N;
③ 该序列首项由输入指定.
例如 N=2, 指定首项为01, 则一个满足上述要求的序列为
01 11 10 00
  输入数据 ┏━━━━━━┓ ┏━━━━━┓
文件名由键盘输入 ┃EXAMPLE4.TXT┃ ┃MODEL4.TXT┃
该文件共有两行 ┠──────┨ ┠─────┨
第一行为 N ┃2 ┃ ┃2 ┃
第二行为指定的序列首项 ┃01 ┃ ┃01 ┃
┃ ┃ ┃11 ┃
  输出数据 ┗━━━━━━┛ ┃10 ┃
输出文件为 OUTPUT.TXT ┃00 ┃
第一行为 N ┃ ┃
第二行至第2N+1行依次输出序列的每一个串. ┗━━━━━┛
  输入输出举例
参考输入文件: EXAMPLE4.TXT
参考输出文件: MODEL4.TXT
第一天第五题 极值问题
试题
m、n为整数且满足下列两个条件
①m、n∈<EFBFBD>K<EFBFBD>≤K≤ 10^9
②(n^2mnm^2)^2=1
编一程序由键盘输入K求一组满足上述两个条件的m、n并且使m^2n^2的值最大。
例如若K则mn则m、n满足条件且可使m^2n^2的值最大。
输入数据:
键盘输入K。
输出数据:
输出有两行:
第一行为m的值
第二行为n的值。
第二天试题 下棋
一个N×M的棋盘上每格均涂有黑色或白色,黑色代表建筑物,白色代表街道。例如
下图是个6×8的棋盘。N为行数,M为列数。棋盘上只有建筑物和街道, 不存在广场,
即任意一个2×2的区域不会全是白格。
1□□□□□■□■
2■■□■□□□□
3□□□■□■□■
4□■■■□■□□
5□■□□□■■■
6□□□■□□□□
(图6.5-1)
现有R枚棋子(代表R个行人)分别放在棋盘的R个白格上, 它们各自有一个目的格
(也是白格,目的格有可能相同),希望它们能尽快地全部到达目的格,行动规则如下:
①所有棋子同时行动一次称为一步,行动包括走入相邻白格或原地不动;
②同一时刻任何一白格内最多只有一枚棋子;
③棋子行动时可以“跟随”,但不允许“碰撞”。
以下情况称为“跟随”,①、②分别代表第1、2号棋子
┏━┳━┳━┓ 移动 ┏━┳━┳━┓
┃①┃②┃ ┃───→┃ ┃①┃②┃
┗━┻━┻━┛ 一步后 ┗━┻━┻━┛
┏━┓ ┏━┓
┃①┃ ┃ ┃
┏━╋━┫───→┏━╋━┫
或者 ┃ ┃②┃ ┃②┃①┃
┗━┻━┛ ┗━┻━┛
(图6.5-2)
以下情况称为“碰撞”
┏━┳━┓ ┏━┳━┓
┃①┃②┃───→┃②┃①┃
┗━┻━┛ ┗━┻━┛
(图6.5-3)
④棋子在到达目的格后即可从棋盘上拿走,此格在下一步才允许走入别的棋子;
⑤所有棋子均到达目的格所用步数称为收盘步数Step。
要求:
①求R=1时收盘步数最优解;
②求R=2时收盘步数最优解。较优解酌情给分;
③R〉2时求较优解。
注意:
以上均要求能判无解(即按前述规则无法使全部棋子到达目的格);
2≤M≤16; 2≤N≤16; 1≤R≤6;
解的收盘步数均≤60步。
输入数据:
第1行是M,N(列数在前,行数在后);
第2行至第N+1行是N×M的0、1矩阵,矩阵元素间有一空格。元素0表示白格,
1表示黑格;
第N+2行是R;
第N+3行至第N+2+R行分别是第1~R号棋子的
起点横坐标_起点纵坐标_终点横坐标_终点纵坐标
输入文件不会有错
注意棋子有编号,编号不可颠倒。
输出数据:
若无解,输出文件为-1;
若有解,第一行输出收盘步数Step, 第二行至第Step+1行依次输出第一步
至第Step步后所有棋子位置,每行格式为
1号棋子横坐标_1号纵坐标_2号横坐标_……_R号纵坐标
坐标参见(图6.5-1)。特别地,当某个棋子从棋盘上拿去后,其坐标输出为0
以便标识。
评分:
输入输出文件名由键盘输入,评测时运行时间分三个档次:
≤5秒, ≤10秒, ≤20秒。