题库练习 大富翁游戏
← 上一题 下一题 →

A1640 | 大富翁游戏

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

小码君和小码酱在玩大富翁游戏。这个大富翁游戏**与一般的大富翁游戏在玩法上有略微区别**。

大富翁游戏是由 $n$ 个格子组成,编号逆时针地从 $1,2,...,n$,构成了一个环。小码君和小码酱起始在编号为 $1$ 的格子。小码君和小码酱最开始都有 $m$ 元资金。每一个回合,小码君先投掷骰子,再是小码酱投掷骰子。每一方行动时,设骰子最上面的数字为 $k$,则行动方逆时针移动 $k$ 步。在移动的过程中,行动者所经过的每一个格子应当都分为两种情况:

- 如果当前格子(假设编号为 $i$)上有建筑物,而且建筑物是自己的,则行动方可以获得额外的 $a_i$ 元资金。
- 如果当前格子上有建筑物,但是建筑物是对方的,则行动方要将自己的 $a_i$ 元资金转移给对方。

在行动结束后亦有两种情况:

- 如果当前格子(设编号为 $i$)上没有建筑物,则行动方可以选择花费 $C_{i,0}$ 元资金(前提要求行动者当前的资金大于等于 $C_{i,0}$)搭建建筑物,此时 $a_i$ 被初始化为 $C_{i,0}$。
- 如果当前格子的建筑物是行动方的,假设当前是一座 $j$ 等级的建筑物,那么行动方可以选择用 $C_{i,j}$ 元为建筑物升级,功效是使得 $a_i \gets a_i+C_{i,j}$。这里,$C_{i,j}$ 表示将第 $i$ 个格子上的第 $j$ 等级的建筑物升级到第 $j+1$ 等级的建筑物所需花费的资金。同一回合内可以多次升级建筑。特别地,建筑物的等级上限为 $L$。如果当前建筑物等级已经到达上限则无法升级。
- 在所有建筑操作结束后,操作权转移给另一方。

两人都操作完一轮回合后,圆环上的每个建筑物都会提供给拥有者资金,具体来说,第 $i$ 格上的建筑物会给其拥有者提供 $d_i$ 的资金。游戏结束当且仅当存在一个人在它行动过程中或者结束时的资金为负数。此时这个人成为输家(换而言之,允许中途过程资金为 $0$)。

给定小码君和小码酱的 $q$ 个回合的每次操作,请问谁会是输家呢?

输入格式

第一行输入四个正整数 $n,m,q,L$,表示格子数、初始资金、回合次数和建筑物等级上限。

第二行开始,往下 $n$ 行,每行输入 $L$ 个正整数,表示 $C_{i,j}$,其中 $j$ 是从 $0$ 到 $L-1$。

第 $(n+2)$ 行输入 $n$ 个正整数表示 $d_i$。

第 $(n+3)$ 行开始,往下若干行,每行只会有两种可能的情况:

- $\text{1 k}$,表示当前行动方投掷了骰子,最上面的点数是 $k$。之后行动者会逆时针移动 $k$ 步。
- $\text{2 k}$,表示当前行动方在当前位置**建造或者升级**了建筑物共 $k$ 次。
- 在此过程中,当前位置已经有了对方建筑物则忽略此操作;
- 如果资金不够升级 $k$ 次,则只升级到资金允许范围内的最高等级;
- 在此过程中,如果进行下一次升级,建筑物等级超过 $L$,则后续的所有升级忽略处理。

特别地,规定除了第一次外,每次 $\text{1 k}$ 操作出现时意味着行动者的切换。也就是说,第一次输入 $\text{1 k}$ 操作时,行动方是小码君,第二次是小码酱,第三次是小码君……以此类推。值得注意的是,$\text{2 k}$ 操作出现**并不会**切换行动者。

此外,**保证每个 $\mathbf{1}$ 操作后面最多跟随 $\mathbf{1}$ 个 $\mathbf{2}$ 操作**。

输出格式

如果已经分出了输赢,则输出谁是输家(如果小码君输,则输出 $\text{JUN}$;如果小码酱输,则输出 $\text{JIANG}$);

如果没有分出输赢,则按照先小码君,后小码酱的顺序输出她们现在有的资金数。

输入输出样例

输入 #1
6 40 5 3
10 20 30
15 25 35
6 8 12
6 12 18
8 16 24
8 12 40
1 2 3 4 5 6
1 4
2 3
1 2
2 5
1 3
1 2
2 1
1 5
2 3
1 3
2 4
1 4
1 6
2 2
1 3
2 1
1 3
2 1
输出 #1
JIANG
输入 #2
6 9961 5 3
10 20 30
15 25 35
6 8 12
6 12 18
8 16 24
8 12 40
1 2 3 4 5 6
1 4
2 3
1 2
2 5
1 3
1 2
2 1
1 5
2 3
1 3
2 4
1 4
1 6
2 2
1 3
2 1
1 3
2 1
输出 #2
10099 9946
C++ 编辑器
输入
输出