CQOI2013 题目

 

NOI 2013 全国青少年信息学奥林匹克竞赛

 

重庆代表队选拔赛

 

 

 

 

试题一览

 

题目

新Nim游戏

棋盘游戏

二进制a+b

图的逆变换

新数独

代号

nim

chess

aplusb

inverse

sudoku

输入文件

nim.in

chess.in

aplusb.in

inverse.in

sudoku.in

输出文件

nim.out

chess.out

aplusb.out

inverse.out

sudoku.out

测试点数目

10

25

25

20

8

单测试点分值

20

8

8

10

25

满分分值

200

200

200

200

200

时限

1秒

2秒

2秒

2秒

1秒

 

 

 

 

2013年3月?日

5小时完成

 

注意:可以使用64位整数和STL,但这不一定是解题必须的

 

新Nim游戏

传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同)。两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴。可以只拿一根,也可以拿走整堆火柴,但不能同时从超过一堆火柴中拿。拿走最后一根火柴的游戏者胜利。

本题的游戏稍微有些不同:在第一个回合中,第一个游戏者可以直接拿走若干个整堆的火柴。可以一堆都不拿,但不可以全部拿走。第二回合也一样,第二个游戏者也有这样一次机会。从第三个回合(又轮到第一个游戏者)开始,规则和Nim游戏一样。

如果你先拿,怎样才能保证获胜?如果可以获胜的话,还要让第一回合拿的火柴总数尽量小。

 

【输入格式】

第一行为整数k。即火柴堆数。第二行包含k个不超过109的正整数,即各堆的火柴个数。

 

【输出格式】

输出第一回合拿的火柴数目的最小值。如果不能保证取胜,输出-1。

 

【输入输出样例】

nim.in

nim.out

6

5 5 6 6 5 5

21

nim.in

nim.out

3

1 2 3

1

 

【数据范围】

编号

1-5

6-10

k

<=10

<=100

 

 

棋盘游戏

一个n*n(n>=2)棋盘上有黑白棋子各一枚。游戏者A和B轮流移动棋子,A先走。

l         A的移动规则:只能移动白棋子。可以往上下左右四个方向之一移动一格。

l         B的移动规则:只能移动黑棋子。可以往上下左右四个方向之一移动一格或者两格。

和通常的“吃子”规则一样,当某游戏者把自己的棋子移动到对方棋子所在的格子时,他就赢了。两个游戏者都很聪明,当可以获胜时会尽快获胜,只能输掉的时候会尽量拖延时间。你的任务是判断谁会赢,需要多少回合。

比如n=2,白棋子在(1,1),黑棋子在(2,2),那么虽然A有两种走法,第二个回合B总能取胜。

 

【输入格式】

输入仅一行,包含五个整数n, r1, c1, r2, c2,即棋盘大小和棋子位置。白色棋子在(r1,c1),黑色棋子在(r2,c2)(1<=r1,c1,r2,c2<=n)。黑白棋子的位置保证不相同。

 

【输出格式】

输出仅一行,即游戏结果。如果A获胜,输出WHITE x;如果B获胜,输出BLACK x;如果二者都没有必胜策略,输出DRAW。

 

【输入输出样例】

chess.in

chess.out

2 1 1 2 2

BLACK 2

chess.in

chess.out

2 2 2 1 2

WHITE 1

chess.in

chess.out

3 1 1 3 3

BLACK 6

 

【数据范围】

编号

1-10

11-25

n

<=5

<=20

 

 

 

二进制a+b

输入三个整数a, b, c,把它们写成无前导0的二进制整数。比如a=7, b=6, c=9,写成二进制为a=111, b=110, c=1001。接下来以位数最多的为基准,其他整数在前面添加前导0,使得a, b, c拥有相同的位数。比如在刚才的例子中,添加完前导0后为a=0111, b=0110, c=1001。最后,把a, b, c的各位进行重排,得到a’, b’, c’,使得a’+b’=c’。比如在刚才的例子中,可以这样重排:a’=0111, b’=0011, c’=1010。

你的任务是让c’最小。如果无解,输出-1。

 

【输入格式】

输入仅一行,包含三个整数a, b, c。

 

【输出格式】

输出仅一行,为c’的最小值。

 

【输入输出样例】

aplusb.in

aplusb.out

7 6 9

10

aplusb.in

aplusb.out

1 1 4

2

aplusb.in

aplusb.out

1 1 1

-1

 

【数据范围】

编号

1-5

6-10

11-25

a,b,c

<=100

<=1000

<=230

 

 

图的逆变换

给一个n结点m条边的有向图D,可以这样构造图E:给D的每条边u->v,在E中建立一个点uv,然后对于D中的两条边u->v和v->w,在E中从uv向vw连一条有向边。E中不含有其他点和边。

输入E,你的任务是判断是否存在相应的D。注意,D可以有重边和自环。

 

【输入格式】

第一行包含测试数据个数T(T<=10)。每组数据前两行为D的边数(即E的点数)m和E的边数k(0<=m<=300)。以下k行每行两个整数x, y,表示E中有一条有向边x->y。E中的点编号为0~m-1。

 

【输出格式】

对于每组数据输出一行。如果存在,输出Yes,否则输出No。

 

【输入输出样例】

inverse.in

inverse.out

4

2

1

0 1

5

0

4

3

0 1

2 1

2 3

3

9

0 1

0 2

1 2

1 0

2 0

2 1

0 0

1 1

2 2

Yes

Yes

No

Yes

 

 

新数独

下面是一个没有数字,只有大小关系(没错!那些尖角都是“大于”符号!)的数独:

 

除了大小关系外(注意相邻格子不能相同),还需要满足通常的数独规则:

l         每个格子都是1~9 的数字

l         每行都是1~9的排列

l         每列都是1~9的排列

l         每个3*3的子矩阵(上图中用粗线隔开,一共有3*3个这样的子矩阵)都是1~9的排列

为了美观,每个3*3子矩阵的所有12相邻格子的大小关系都将给出。

 

【输入格式】

输入一共15行,包含一个新数独的实例。第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v)。

 

【输出格式】

输出包含9行,每行9个1~9的数字,以单个空格隔开。输入保证解惟一。

 

【输入输出样例】

sudoku.in

sudoku.out

 

5 3 9 4 6 8 2 1 7

2 4 8 1 9 7 3 5 6

1 6 7 2 3 5 9 8 4

6 8 1 7 4 2 5 9 3

3 7 5 9 1 6 8 4 2

9 2 4 5 8 3 7 6 1

7 9 6 8 2 1 4 3 5

4 1 2 3 5 9 6 7 8

8 5 3 6 7 4 1 2 9

 

【提示】

强烈建议选手使用电子版的样例输入输出进行测试。

转载于:https://www.cnblogs.com/Return-0/archive/2013/04/06/3001987.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值