本题是一个零和、轮换、完全信息的公平博弈。每步只能把某一堆减一,但有两条“雷区”会让当前操作者立即失败:
设当前最小值为 mn,最大值为 mx,差值 D = mx - mn,最大值出现次数为 cntMax。
在一场博弈中,有 n 堆石子,第 i 堆初始有 ci 颗石子。两位玩家 Alice 和 Bob 轮流操作,Alice 先手。每回合当前玩家必须选择一堆石子并从中取走恰好一颗。如果取走之后满足以下任一条件,则该玩家立即输掉游戏:
输入数据规模满足:测试组数 T≤104;每组中堆数 n 满足 2≤n≤105,且所有组的 n 之和不超过 105;参数 m 为 0≤m≤109;每堆石子数 ci 满足 1≤ci≤109。
第一行包含一个整数 T(1≤T≤104),代表测试数据组数。接下来每组数据包含两行:第一行两个整数 n 和 m(2≤n≤105,0≤m≤109),分别表示堆数和允许的最大极差;第二行 n 个整数 c1,c2,…,cn(1≤ci≤109),表示每堆的初始石子数。保证所有测试组的 n 之和不超过 105。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.