这个博弈中,玩家从当前数组中任选一个元素 aj(其在当前数组中的位置为 p),并得到分数 aj−p,随后删除该元素。两人轮流、都采取最优策略,判断先手 Alice 的最终结果。
关键观察:当前位置 p 等于“当前仍然存在且下标小于 j 的元素个数 + 1”。如果把原数组下标从 0 开始,设还未被删除的元素集合用一个比特掩码 mask 表示,则当选择下标 j 时:
Alice 和 Bob 进行一场游戏。初始有一个长度为 n 的非负整数序列 a1,a2,…,an。两人轮流操作,Alice 先手。每次操作时,当前回合的玩家必须从当前序列中选择一个元素,记该元素的值为 x,在序列中的位置为 p(位置从 1 开始计数)。该玩家获得 x−p 分,随后该元素被移除,其右侧的所有元素向左移动一位,填补空位。当序列中没有元素时,游戏结束。总得分更高的一方获胜;若两人得分相等,则游戏平局。双方均采取最优策略,请你在游戏开始前判断最终结果。
本题中,测试用例个数不超过 10。对于每个测试用例,序列长度 n 满足 1≤n≤20,序列中的每个元素均为不超过 109 的非负整数。
第一行包含一个整数 t (1≤t≤10),表示测试用例的数量。接下来是 t 个测试用例。每个测试用例的第一行包含一个整数 n (1≤n≤20),表示序列的长度。第二行包含 n 个整数,依次表示序列中的元素 a1,a2,…,an (0≤ai≤109),整数之间用空格分隔。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.