每个测试文件均包含多组测试数据。第一行输入一个整数
代表数据组数,每组测试数据描述如下:
第一行输入一个整数
代表卡牌种类数。
第二行输入
个整数
代表每种卡牌数量。
除此之外,保证每一组测试数据的卡牌总数之和不小于
;单个测试文件的
之和不超过
。
对于每一组测试数据,如果没有必胜策略,直接输出
;否则,在单独的一行上输出一个整数,代表你至少需要预知多少张卡牌,才能保证你不会输。
3 2 1 1 1 10 2 2 3
0 -1 3
对于第一组测试数据,只有两张卡牌,且各不相同,直接翻开即可。
对于第二组测试数据,由于卡牌种类唯一,不管怎么翻都会输。
T = int(input()) for i in range(T): n = int(input()) p = list(map(int,input().split())) if n==1: print(-1) else: if sum(p)==max(p)+n-1:#“除最大堆外,所有其他卡牌数量均为 1” print(max(p)-1)#随机预知k张;①预知的选一张,剩余的选一张。②预知的里面选两种 else: print(max(p))#①预知的选一张,剩余的选一张。②预知的里面选两种,k张牌中必然包含两种(对应②),或者只为数量最多的牌(对应①)。