题目名称 1650. [POI 2000]布条游戏
输入输出 pas.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 14
题目来源 Gravatarcstdio 于2014-05-29加入
开放分组 全部用户
提交状态
分类标签
博弈论
分享题解
通过:13, 提交:21, 通过率:61.9%
GravatarJSX 100 0.021 s 0.30 MiB C++
Gravatarnew ioer 100 0.022 s 0.29 MiB C++
GravatarFoolMike 100 0.024 s 1.05 MiB C++
Gravatarcstdio 100 0.030 s 0.32 MiB C++
GravatarChtholly 100 0.030 s 0.32 MiB C++
Gravataryourfather 100 0.035 s 0.29 MiB C++
GravatarONCE AGAIN 100 0.039 s 0.29 MiB C++
Gravatarztx 100 0.042 s 0.27 MiB C++
Gravatar阿狸 100 0.059 s 0.32 MiB C++
GravatarAglove 100 0.076 s 0.34 MiB C++
关于 布条游戏 的近10条评论(全部评论)
竟然想不到DP策略,我真的好菜
Gravatar-1
2017-12-08 14:37 1楼

1650. [POI 2000]布条游戏

★   输入文件:pas.in   输出文件:pas.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

布条游戏是一个双人游戏。游戏需要一张棋盘和三种颜色的矩形布条:红色,绿色和蓝色。所有的红色布条大小都为c*1(这指1行c列,下同),绿色布条是z*1,蓝色布条是m*1,其中c,z,n都是整数。每名玩家都有无限数量的三种布条。

棋盘是一个大小为p*1的矩形,包含p个1*1的小方格。

玩家轮流移动。每次移动,玩家在棋盘上放置一块任意颜色的布条。有一些规则必须遵守:

·布条不能超出棋盘范围。

·不能覆盖(甚至不能部分覆盖)先前放置的布条。

·布条的两端必须和方格的(竖直)边重合。无法按规则移动的玩家输。

先手指第一个移动的玩家。我们说先手必胜,如果无论后手(即第二个移动的玩家)做出如何移动,先手都能赢。

请你写一个程序判断先手是否有必胜策略。

【输入格式】

输入文件的第一行有三个空格隔开的整数c,z,n(1<=c,z,n<=1000),分别代表红,绿,蓝三种颜色布条的长度。

第二行有一个整数m(1<=m<=1000),代表需要考虑的不同棋盘数量。

第3行到第m+2行每行有一个整数p(1<=p<=1000).第i+2行的整数代表第i张棋盘的长度。

【输出格式】

输出应当包含m行。

第i行应当只有一个整数:

·1——如果第i张棋盘的先手必胜。

·2——其他情况。

【样例输入】

1 5 1
3
1
5
6

【样例输出】

1
1
2

【来源】

POI 2000 Stipes