不妨设
c
n
t
[
A
]
≤
c
n
t
[
B
]
≤
c
n
t
[
C
]
cnt[A]\le cnt[B]\le cnt[C]
cnt[A]≤cnt[B]≤cnt[C]
假设我们已经知道了保留的
A
A
A的位置,那么把未保留的
A
A
A全部删掉,对于相邻的相同的字母仍然只保留一个
设
p
p
p,
q
q
q,
r
r
r表示
A
A
A,
B
B
B,
C
C
C出现的次数,因为删除一个
A
A
A最多去掉一个
B
B
B或
C
C
C,所以
p
≤
q
p\le q
p≤q,
p
≤
r
p\le r
p≤r
假设
q
=
r
q=r
q=r,那么可以重复删除
B
C
BC
BC直到
p
=
q
=
r
p=q=r
p=q=r。因为考虑
A
A
A隔开的若干子串,如果长度
≥
4
\ge 4
≥4那么就会出现
B
C
B
C
BCBC
BCBC的结构,可以删去中间的
B
C
BC
BC,如果长度
=
3
=3
=3就会出现
A
B
C
B
A
ABCBA
ABCBA的结构,可以删去中间的
B
C
BC
BC或
C
B
CB
CB,而根据鸽巢原理一定会有一段落入至少
3
3
3个字母(两端只能最多放一个字母)
假设
q
<
r
qq<r,继续寻找必要条件,设含
B
B
B的子段数目为
x
x
x,只含一个
C
C
C的子段数目为
y
y
y,若
x
<
y
xx<y,那么无论如何删除
B
,
C
B,C
B,C,它们的出现次数都不会相同。若
x
≥
y
x\ge y
x≥y,那么我们总能删除一些
C
C
C使得
B
,
C
B,C
B,C出现次数相同,这是因为我们总能对含
B
B
B的子段进行改造,使得这一段中
B
B
B的数目比
C
C
C多
1
1
1
回到原问题。问题转化为删除最少的
A
A
A使得留下的序列合法
那么一个合法的序列应该满足:
含
B
B
B的串大于等于
C
C
C的单位串,含
C
C
C的串大于等于
B
B
B的单位串
不妨验证其正确性:当
q
<
r
qq<r时,因为合法所以含
B
B
B的串大于等于
C
C
C的单位串,同时反证法可以证明此时含
C
C
C的串大于等于
B
B
B的单位串 雾,卡了很久。当
q
=
r
q=r
q=r 时,若含
B
B
B的串小于
C
C
C的单位串,同样可以推出
B
B
B的数目比
C
C
C少,与前提矛盾
设原序列中含
B
B
B串数目为
b
1
b1
b1,
B
B
B的单位串数目为
b
2
b2
b2,含
C
C
C串数目为
c
1
c1
c1,
C
C
C的单位串数目为
c
2
c2
c2。
如果
b
1
≥
c
2
b1\ge c2
b1≥c2,
c
1
≥
b
2
c1\ge b2
c1≥b2那么可以把所有的
A
A
A保留下来。
否则不妨设
b
1
<
c
2
,
c
1
≥
b
2
b1b1<c2,c1≥b2
然后我们每次删
A
A
A最多只能让
c
2
c2
c2减
1
1
1而不能让
b
1
b1
b1变大
令
p
[
i
]
=
⊕
x
a
[
x
]
[
i
]
p[i]=\oplus_xa[x][i]
p[i]=⊕xa[x][i],
q
[
x
]
[
i
]
=
⊕
y
a
[
x
]
[
y
]
(
y
m
o
d
3
=
i
)
q[x][i]=\oplus_{y}a[x][y](y\bmod 3=i)
q[x][i]=⊕ya[x][y](ymod3=i)
考虑构造
a
[
i
]
=
⊕
x
q
[
x
]
[
i
]
a[i]=\oplus_{x}q[x][i]
a[i]=⊕xq[x][i],
b
[
i
]
=
∑
x
p
[
x
]
(
x
m
o
d
3
=
i
)
b[i]=\sum_{x}p[x](x\bmod 3=i)
b[i]=∑xp[x](xmod3=i)
那么
a
[
i
]
a[i]
a[i]和
b
[
i
]
b[i]
b[i]的奇偶性必须匹配,剩下的
1
1
1的个数是
∑
i
=
0
2
max
(
a
[
i
]
,
b
[
i
]
)
\sum_{i=0}^2\max(a[i],b[i])
∑i=02max(a[i],b[i])
然后可以把若干个
q
[
x
]
q[x]
q[x]取反,但是必须保证
a
[
i
]
a[i]
a[i]奇偶性不变,也就是翻转偶数个
q
[
x
]
q[x]
q[x]
Alice
\text{Alice}
Alice必胜当且仅当能将
n
n
n个数分成
n
2
\frac{n}{2}
2n组,并选择其中一组中的一个数,使得这个数加上剩余
n
2
−
1
\frac{n}{2}-1
2n−1组数中的最小值
≥
L
\ge L
≥L,最大值
≤
R
\le R
≤R
否则
Bob
\text{Bob}
Bob总能使得当前局面下
Alice
\text{Alice}
Alice不存在必胜策略,直到所有数都被取完
不妨看成是
Alice
\text{Alice}
Alice强行保留了一个数,并强行扔掉了一个数
枚举这两个数即可做到复杂度
O
(
n
2
)
O(n^2)
O(n2)
毋宁为猜结论的好题。
Neither AB nor BA
巧妙的计数题
考虑黑白染色,那么每次删除的位置都会跨过黑和白
然后考虑做一个翻转,把奇数位的
B
→
A
B\to A
B→A,
A
→
B
A\to B
A→B
那么原问题转化为长度为
n
n
n的序列,不能删除
A
A
AA
AA或
B
B
BB
BB,最终能够全部删完的序列数量
单独考虑
A
A
A,因为每次至多删除
1
1
1个,所以
A
A
A的数目不能超过
n
2
\frac{n}{2}
2n,同理
B
B
B的数目也不能超过
n
2
\frac{n}{2}
2n
问题转化为求
A
,
B
A,B
A,B数量
≤
n
2
\le \frac{n}{2}
≤2n的序列的个数
根据众数那套理论可以转化为求出现次数
>
n
2
>\frac{n}{2}
>2n的序列个数
答案是
3
n
−
2
∑
i
=
n
2
+
1
n
(
n
i
)
2
n
−
i
3^n-2\sum_{i=\frac{n}{2}+1}^n\binom{n}{i}2^{n-i}
3n−2∑i=2n+1n(in)2n−i