abc156
题解翻译器 2022-5-3
A题
过于简单,不解
B题
过于简单,不解
C题
过于简单,不解
D题
没看,不解
E题
题意看了之后,是比较迷的。但是根据样例我们可以发现,所谓的精确
k
k
k 次,是不是有什么特殊性。首先我们得到一个式子,假设最后的集合为
{
a
1
,
a
2
.
.
.
.
a
i
,
.
.
a
n
}
\lbrace a_1,a_2....a_i,..a_n \rbrace
{a1,a2....ai,..an},要符合要求,必须满足的要求是
∑
a
b
s
(
a
i
−
1
)
≤
k
\sum abs(a_i-1) \le k
∑abs(ai−1)≤k,至于为什么是小于等于,而不是精确等于,这是因为传递性可以让房间里的人变化。就是样例中的
{
0
,
1
,
2
}
\{0,1,2\}
{0,1,2} ,清楚了这个,就明白为什么要求是小于等于了。这种情况我们就好算了,由于
a
i
≥
0
a_i \ge 0
ai≥0,我们可以枚举有多少个等于
0
0
0。剩下的房间至少有
1
1
1 个。
a
n
s
=
∑
i
=
0
m
i
n
(
k
,
n
)
(
n
i
)
(
n
−
1
n
−
k
−
1
)
ans = \sum _{i=0} ^{min(k,n)} {n \choose i} {n-1 \choose n-k-1}
ans=i=0∑min(k,n)(in)(n−k−1n−1)
剩下的房间至少有
1
1
1 个就是插板法了,经典的整数拆分。
F题
这个题比较有意思,先说复杂度是 O ( q k ) O(qk) O(qk)
对于每一个询问,如果我们要求 a i < a i + 1 m o d m a_i < a_{i+1} \mod m ai<ai+1modm,不好求。我们反过来求 a i ≥ a i + 1 m o d m a_i \ge a_{i+1} \mod m ai≥ai+1modm。
- a i = a i + 1 m o d m a_i = a_{i+1} \mod m ai=ai+1modm
拆开我们发现, a i = ( a i + b i ) m o d m a_i = (a_i + b_i) \mod m ai=(ai+bi)modm => b i = 0 m o d m b_i = 0 \mod m bi=0modm,我们只需要记录有多少个 b i = 0 m o d m b_i = 0 \mod m bi=0modm 即可
- 对于 a i > a i + 1 m o d m a_i > a_{i+1} \mod m ai>ai+1modm
我们要是对
b
i
b_i
bi 都取了模
m
m
m,定义
b
i
’
=
b
i
m
o
d
m
b_i’ = b_i \mod m
bi’=bimodm,那么如果是
a
i
>
a
i
+
1
m
o
d
m
a_i > a_{i+1} \mod m
ai>ai+1modm,必然存在 :
⌊
a
i
m
⌋
+
1
=
⌊
a
i
+
1
m
⌋
\lfloor \frac{a_i}{m} \rfloor + 1 = \lfloor \frac{a_{i+1}}{m} \rfloor
⌊mai⌋+1=⌊mai+1⌋
分析一下便可以知道,由于
b
i
′
<
m
b_i ' < m
bi′<m,要是
a
i
+
1
a_{i+1}
ai+1 商多了
1
1
1 ,就一定会有模后小于
a
i
a_i
ai
那么实际上,由于商每增加
1
1
1,就会多一个贡献,那么答案就是:
⌊
a
n
−
1
m
⌋
−
⌊
a
0
m
⌋
\lfloor \frac{a_{n - 1}}{m} \rfloor - \lfloor \frac{a_{0}}{m} \rfloor
⌊man−1⌋−⌊ma0⌋
最后用
n
−
1
n-1
n−1 减去这两个的贡献就是答案了。
细节不再赘述。