content
A. Arithmetic Array
点点点
B. Bad Boy
点点点
C. Challenging Cliffs
点点点
D. Deleting Divisors
题意:
t
(
1
⩽
t
⩽
1
0
4
)
t \left(1\leqslant t\leqslant 10^4\right)
t(1⩽t⩽104)组数据,每组数据给定一个数
n
(
1
⩽
n
⩽
1
0
9
)
n \left(1\leqslant n\leqslant 10^9\right)
n(1⩽n⩽109)。
Alice和Bob依次对当前数进行操作,操作为减去当前数
n
n
n的一个因子(非1、非
n
n
n)。最后一个不能操作的为负。
题解:
记数
i
i
i的先手胜利态为
f
[
i
]
f[i]
f[i],则
f
[
i
]
f[i]
f[i]的胜利态可以从
f
[
i
−
f
a
c
t
o
r
(
i
)
]
f[i-factor(i)]
f[i−factor(i)]推导出来。令
f
[
i
]
=
A
l
i
c
e
f[i] = Alice
f[i]=Alice为先手胜,
f
[
i
]
=
B
o
b
f[i] = Bob
f[i]=Bob为先手负。则当
∀
f
[
i
−
f
a
c
t
o
r
(
i
)
]
=
A
l
i
c
e
\forall f[i - factor(i)] = Alice
∀f[i−factor(i)]=Alice时,
f
[
i
]
=
B
o
b
f[i] = Bob
f[i]=Bob;当
∃
f
[
i
−
f
a
c
t
o
r
(
i
)
]
=
B
o
b
\exists f[i - factor(i)] = Bob
∃f[i−factor(i)]=Bob时,
f
[
i
]
=
A
l
i
c
e
f[i] = Alice
f[i]=Alice。解释如下,如果所有下一步操作都是先手胜,则当前操作的后手胜;如果存在下一步操作后手胜,则当前操作先手胜。
有了如上推导,我们可以先模拟前32的结果。
观察可以发现,基本符合奇数为
B
o
b
Bob
Bob,偶数为
A
l
i
c
e
Alice
Alice,
2
n
2^n
2n为特例。我们可以用归纳法证明如上结论。对奇数
p
p
p,其所有子状态
p
−
f
a
c
t
o
r
(
p
)
p-factor(p)
p−factor(p)都是偶数;对
p
⋅
2
n
(
p
≠
1
)
p\cdot 2^n(p \neq 1)
p⋅2n(p=1),存在
p
⋅
2
n
−
p
=
p
⋅
(
2
n
−
1
)
p\cdot 2^n - p = p \cdot (2^n - 1)
p⋅2n−p=p⋅(2n−1)为奇数。对
2
n
2^n
2n,子状态为
2
n
−
2
m
(
m
<
n
)
2^n - 2^m (m < n)
2n−2m(m<n),当
m
<
n
−
1
m < n - 1
m<n−1时,如上证明;当
m
=
n
−
1
m = n - 1
m=n−1时,取决于
2
n
−
2
m
=
2
m
2^n - 2^m = 2^m
2n−2m=2m,即要考虑
n
n
n的奇偶性。
E1. Erase and Extend (Easy Version)
题意:
给定一个字符串
s
s
s,有两种操作。1. s = s + s;2. 删去最后一位。求经过若干次操作后的最小字典序字符串。给定字符串长度为
n
n
n,所求字符串长度为
k
k
k。
n
,
k
(
1
⩽
n
,
k
⩽
5
⋅
1
0
3
)
n, k \left(1\leqslant n, k\leqslant 5 \cdot 10^3\right)
n,k(1⩽n,k⩽5⋅103)
题解:
如下。
E2. Erase and Extend (Hard Version)
题意:
如上。
n
,
k
(
1
⩽
n
,
k
⩽
5
⋅
1
0
5
)
n, k \left(1\leqslant n, k\leqslant 5 \cdot 10^5\right)
n,k(1⩽n,k⩽5⋅105)
题解:
贪心。对于一个字符串
s
s
s,操作1后的任意操作2不会影响
s
s
s长度
l
e
n
len
len之前的最优解;单独操作2也不会。所以答案是前缀字符串的重复。
记下标
i
i
i之前的最优前缀字符串为
s
0
s_0
s0,则只需要比较当前小于
s
0
s_0
s0内相应位置,则当前字符串更优,更新
s
0
s_0
s0;若相等,则之后可能存在更优解;若大于,则
s
0
s_0
s0已经最优。
F. Figure Fixing
题意:
t
(
1
⩽
t
⩽
1
0
3
)
t \left(1\leqslant t\leqslant 10^3\right)
t(1⩽t⩽103)组数据,每组数据给定
n
(
1
⩽
n
⩽
2
⋅
1
0
5
)
n \left(1\leqslant n\leqslant 2 \cdot 10^5\right)
n(1⩽n⩽2⋅105)个点
m
(
n
−
1
⩽
m
⩽
m
i
n
(
2
⋅
1
0
5
,
n
(
n
−
1
)
2
)
)
m \left(n - 1\leqslant m\leqslant min(2 \cdot 10^5, \frac{n(n - 1)}{2})\right)
m(n−1⩽m⩽min(2⋅105,2n(n−1)))条边的无向连通图,每个点有初始值
v
v
v和目标值
t
t
t。操作如下,对一条边
e
d
g
e
edge
edge的两个点
p
,
q
p, q
p,q,可以加上一个相同值(任意值,可以为负)。问是否存在有限操作,使得每个点的值都变为目标值。
题解:
二分图。
一个显然的判断是初始值和与目标值和的奇偶性。
如果是二分图,那么每个操作都对两个集合的点加上了相同值,则每个集合的和变化相同,那么只有在原来的和(差值)相同的情况下,才成立。下证在这种情况下,存在有限操作。 不会证。 如果非要证,猜一手递归或者矩阵。证明见update F。
如果不是二分图,则可以对一个集合的值改变偶数的差异,变成二分图问题,判断奇偶性即可。
update:
F
证明如下:
已知是连通图,先找割边。去掉割边后,可以看做是两个独立的子问题,且有
s
u
m
11
+
s
u
m
12
+
d
i
f
i
=
s
u
m
21
+
s
u
m
22
+
d
i
f
j
sum_{11} + sum_{12} + dif_i = sum_{21} + sum_{22} + dif_j
sum11+sum12+difi=sum21+sum22+difj。
i
i
i是连通
s
u
m
11
,
s
u
m
21
sum_{11}, sum_{21}
sum11,sum21的点,
j
j
j是连通
s
u
m
12
,
s
u
m
22
sum_{12}, sum_{22}
sum12,sum22的点。那么对
s
u
m
21
,
d
i
f
i
sum_{21}, dif_i
sum21,difi加上
s
u
m
11
−
s
u
m
21
sum_{11} - sum_{21}
sum11−sum21,对
s
u
m
12
,
d
i
f
j
sum_{12}, dif_j
sum12,difj加上
s
u
m
22
−
s
u
m
12
sum_{22} - sum_{12}
sum22−sum12,则更新后的
s
u
m
11
=
s
u
m
21
,
s
u
m
12
=
s
u
m
22
sum_{11} = sum_{21}, sum_{12} = sum_{22}
sum11=sum21,sum12=sum22。
d
i
f
i
+
s
u
m
11
−
s
u
m
21
=
d
i
f
j
+
s
u
m
22
−
s
u
m
12
dif_i + sum_{11} - sum_{21} = dif_j + sum_{22} - sum_{12}
difi+sum11−sum21=difj+sum22−sum12(次式为更新前的值),符合前式,可减去共同值,符合题意。
如果不存在割边,则去掉任意边后,仍为连通图。
重复上述操作,即可找到符合题意的有限操作。

932

被折叠的 条评论
为什么被折叠?



