D
对于一个序列,相同的对数有(2{2^{N-1}choose 2}),不同的对数有((2^{N-1})^2)
假设选了(len)个序列,那么应该满足:
[egin{aligned}
lencdot 2{2^{N-1}choose 2}=ncdot {2^Nchoose 2}\
lencdot (2^{N-1})^2=mcdot {2^Nchoose 2}
end{aligned}]
通过移项可得:(n:m=2^{N-1}-1:2^{N-1})
将(n=2^{N-1}-1)或(m=2^{N-1})带入上式,会得到(len=2^{N}-1),故这是(len)的下界(同时也说明(2^{N}-1|len))
我们通过构造一种方式,证明答案可以为(2^{N}-1)
第(i)个序列((i=1sim 2^N-1))
在(j)位置上((j=0sim 2^N-1)),若( ext{popcount} (iAnd j))为偶数则填'A',为奇数则填'B'
对于任意(N)长度的二进制,(i)仅缺失了(0),故容易证明这个构造满足(n=2^{N-1}-1),(m=2^{N-1})
E
snuke在当前轮直接选取,那么状态会非常不好记录
我们保留snuke在之前轮,选择放弃暂时不选的次数,然后等蚂蚁走到这来了再选
虽然这个跟原游戏不同,但显然其不会优于最优解,也包含最优解
令(f_{l,r,k})为((l,r))全部被选了,snuke还可以选(k)次的最优解
两种转移方式(填表法):
- 满足(k>0),那么snuke可以选择(l)或(r),则用(f_{l-1,r,k-1}+a_{l})或(f_{l,r+1,k-1}+a_{r})转移
- 目前snuke不选择,则对手选择
那么用(f_{l-1,r,k+1})或(f_{l,r+1,k+1})转移(按照题意,这里的转移是固定的,取(a_l,a_r)中较大的一个)
F
感觉讲起来比较麻烦,就不写题解了...
code