前言
在国庆假期举办的比赛,为了参加这次比赛,也是花了不少力气~~
比赛中文题面,好评!!
题目难度较为简单,在之前的多校和网络赛被强队虐多了,打河南省赛如释重负,完全没有之前那种高强度抗压的感觉了。
最后 rk18, C差一点,本来可以多一题的,可惜~
A. Mocha 上小班了
本场比赛最签的题目,只要按照1023456789
这个顺序构造就行了,
n
>
10
n \gt 10
n>10 直接-1
。
E. Serval 的俳句
贪心,找出出现次数最先达到 5 次的字符,然后接下来找出现次数最先到达7次的字符,最后再找出出现次数最先到达5次的字符。
具体来说,从字符序列
S
S
S 的第一个字符开始,找出一个字符
c
c
c, 其在
S
1...
i
S_{1...i}
S1...i 中出现了5 次,并且使
i
i
i 最小。
然后再找出一个字符
c
′
c'
c′, 其在
S
i
+
1...
j
S_{i+1...j}
Si+1...j 中出现了 7 次,并且使
j
j
j 最小。
最后找出一个字符
c
′
′
c''
c′′ ,在
S
j
+
1..
k
S_{j+1..k}
Sj+1..k 中出现了 5 次。
c
c
c
c
c
c
c
′
.
.
.
c
′
′
.
.
.
.
ccccccc'...c''....
ccccccc′...c′′.... 就是答案。
F. 集合之和
对于集合
A
=
{
0
,
1
,
2
,
3
,
4..
x
}
A=\{0,1,2,3,4..x\}
A={0,1,2,3,4..x}
A
+
A
=
{
0
,
1
,
2
,
3
,
4
,
.
.
.
,
2
×
x
}
A+A = \{0,1,2,3,4,...,2\times x\}
A+A={0,1,2,3,4,...,2×x}
此时
∣
A
+
A
∣
=
2
×
x
+
1
|A+A| = 2 \times x + 1
∣A+A∣=2×x+1 , 这种构造方法可以构造出所有
n
n
n 是奇数的情况。
当
A
=
{
0
,
2
,
3
,
4
,
5..
x
∣
x
≥
3
}
A = \{0,2,3,4,5..x | x\ge 3 \}
A={0,2,3,4,5..x∣x≥3}
A
+
A
=
{
0
,
2
,
3
,
4
,
.
.
,
2
×
x
}
A+A = \{0,2,3,4,.., 2 \times x\}
A+A={0,2,3,4,..,2×x}
∣
A
+
A
∣
=
2
×
x
|A + A| = 2\times x
∣A+A∣=2×x
可以构造出除
n
=
2
或
n
=
4
n = 2或n = 4
n=2或n=4 的所有偶数情况。
n
=
2
或
n
=
4
n=2或n=4
n=2或n=4 无法构造,输出-1
H. 旋转水管
如果
x
>
y
x > y
x>y
建议先翻转地图。
然后令
n
−
x
→
x
n - x \to x
n−x→x
n
−
y
→
y
n - y \to y
n−y→y。
对于
流入口1-> L ->流出口1
流入口2-> L ->流出口2
这样子的水管
水可以从流入口1 流向 流出口2
或者从 流入口2 流向 流出口1
对于
流入口1-> I ->流出口1
只能从 流入口1 流向 流出口1
对于起点和终点,只有可能是以下流法
最后模拟一下所有情况即可。
J. Mex Tree
对于子树
m
e
x
=
k
mex = k
mex=k, 那么
1.这个子树一定不能包含
v
i
=
k
v_i = k
vi=k 这个节点。
2. 并且满足字数上有所有
v
i
=
0..
k
−
1
v_i = 0..k-1
vi=0..k−1 这些节点。
对于条件 1, 我们可以判断所求的子树必须是与节点
v
i
=
k
v_i = k
vi=k 直接相连的那些子树。
对于条件2,判断一个与节点
v
i
=
k
v_i = k
vi=k 相连的子树是否满足条件2,只需要判断与节点
v
i
=
k
v_i = k
vi=k 相连的其他子树的节点的最小值是否大于
k
k
k 即可。
使用 dfs 预处理,或者 RMQ + dfs序,都可以求得上述问题的解。
G. Mocha上大班了
很显然,由于答案求的是对于所有数求与运算和。
最后2进制表示下1 的个数。
题目所给出的操作不会影响结果,因为这种操作只会减少数位1的个数。
所以只要求一下所有数的与运算和的二进制下1的个数即可,
C. Serval的试卷答案
对于
ABCA
中,出现了字符字典序降序的情况,或者DD
这种字典序相等的情况,一定会分为2道不同的题目。
对于给定的一个子串 ,要分为
k
k
k 个题目的分法,其实就相当于在这个子串中插入
k
−
1
k - 1
k−1 个挡板的插法,其中有一些挡板的位置已经固定了,也就是上文中所提到的字符字典序出现降序的情况的位置。
现在问题就转换为求解子串中位置固定的挡板的数量。
我们只需要做一个前缀和序列
P
P
P
P
1
=
A
S
C
I
I
(
S
1
)
−
P_1 = ASCII(S_1) -
P1=ASCII(S1)−A
+
1
+ 1
+1
若
S
i
=
S
i
−
1
S_i = S_{i - 1}
Si=Si−1
P
i
=
P
i
−
1
+
4
P_i = P_{i - 1} + 4
Pi=Pi−1+4
否则
P
i
=
P
i
−
1
+
(
S
i
−
S
i
−
1
+
4
)
%
4
P_i = P_{i - 1} + (S_{i } - S_{i - 1} + 4) \% 4
Pi=Pi−1+(Si−Si−1+4)%4
核心思想:每当 一个子串
S
s
.
.
t
S_{s..t}~~~
Ss..t ,
P
t
−
P
s
>
4
~~~P_t - P_s \gt 4
Pt−Ps>4 时,说明 这个子串就要被划分成2道题。
现在:
对于一个区间
l
,
r
l,r
l,r
固定的挡板的数量就是:
P
l
%
4
≠
0
:
(
P
l
%
4
+
P
r
−
P
l
)
÷
4
P_l\% 4\ne 0:(P_l \% 4 + P_r - P_l) \div 4
Pl%4=0:(Pl%4+Pr−Pl)÷4向上取整
−
1
- 1
−1
P
l
%
4
=
0
:
(
4
+
P
r
−
P
l
)
÷
4
P_l\% 4= 0:(4 + P_r - P_l) \div 4
Pl%4=0:(4+Pr−Pl)÷4向上取整
−
1
- 1
−1
P P P 可以使用树状数组维护。