Rank | Solved | A | B | C | D | E | F | G | H | I |
---|---|---|---|---|---|---|---|---|---|---|
157/1361 | 4/9 | O | O | Ø | Ø | . | O | Ø | O | Ø |
O
: 当场通过
Ø
: 赛后通过
.
: 尚未通过
A The beautiful values of the palace
solved by viscaria&chelly
chelly’s solution
找到坐标和权值的对应关系,就是一个简单的二维数点。
B super_log
solved by viscaria&chelly
chelly’s solution
欧拉降幂,需要正确的欧拉降幂姿势。
C Tsy’s number 5
upsolved by chelly
chelly’s solution
容易想到算贡献,设
f
i
=
∑
k
=
1
n
[
ϕ
(
k
)
=
i
]
f_i=\sum_{k=1}^n [\phi(k)=i]
fi=∑k=1n[ϕ(k)=i],那么我们要求的就是
a
n
s
=
∑
i
=
1
n
∑
j
=
1
n
f
i
f
j
i
j
2
i
j
=
2
∑
i
=
1
n
∑
j
=
1
i
f
i
f
j
i
j
2
i
j
−
∑
i
=
1
n
i
2
f
i
2
2
i
ans=\sum_{i=1}^n \sum_{j=1}^nf_if_jij2^{ij}=2\sum_{i=1}^n \sum_{j=1}^if_if_jij2^{ij}-\sum_{i=1}^ni^2f_i^22^{i}
ans=i=1∑nj=1∑nfifjij2ij=2i=1∑nj=1∑ififjij2ij−i=1∑ni2fi22i
受到
B
l
u
e
s
t
e
i
n
′
s
a
l
g
o
r
i
t
h
m
Bluestein's algorithm
Bluestein′salgorithm的启发,我们可以把
2
i
j
2^{ij}
2ij拆成
2
(
i
+
j
)
2
−
i
2
−
j
2
\sqrt2^{(i+j)^2-i^2-j^2}
2(i+j)2−i2−j2,于是可以
N
T
T
NTT
NTT了。
upsovled by Feynman1999
Feynman1999’s solution
D Robots
upsolved by chelly&viscaria
chelly’s solution
对于期望问题,需要倒过来dp。
首先可以求出每个点到终点的期望步长,然后根据期望步长可以算出期望花费,在计算期望花费的时候的转移边权就是期望花费。
E K Sum
unsolved
F Greedy Sequence
solved by chelly
chelly’s solution
先利用滑动窗口和set求出每个数字的下一个数字,然后按照数字从小到大的顺序dp出链长即可。
G Quadrilateral
upsolved by chelly
chelly’s solution
一个四边形是合法的当且仅当任意三边之和大于另外一条边。
首先题目的数据范围就是在提示我们枚举
d
d
d,然后计算有多少组
(
a
,
b
,
c
)
(a,b,c)
(a,b,c)。
每条边都有上界和下界,我们可以通过容斥的手段使得只有上界,于是问题就变成了对于一个固定的
d
d
d,有多少组
(
x
,
y
,
z
)
(x,y,z)
(x,y,z)是合法的,其中
1
≤
x
≤
a
,
1
≤
y
≤
b
,
1
≤
z
≤
c
1 \leq x \leq a,1 \leq y \leq b,1 \leq z \leq c
1≤x≤a,1≤y≤b,1≤z≤c。
容易想到枚举最长边是谁,然后计算它作为最长边时候的答案,但是遇到边长相同的情况就需要减掉多余的,很麻烦。不妨考虑反面,求出不合法的方案数。即枚举一条边作为最长边,计算它为最长边时候不满足条件的三元组的个数(容易发现当不合法的时候,最长边一定是唯一的)。这相当于解一个有上界的线性不定方程组问题,这是个经典问题,直接容斥解决。容易发现,解出来的解一定是满足最长边限制的。
H Holy Grail
solved by chelly
chelly’s solution
二分+SPFA判环
upsolved by chelly
chelly’s solution
对于在 ( S , T ) (S,T) (S,T)加的最小边,就是原图 T − > S T->S T−>S的最短路径。所以可以不需要二分。
I Washing clothes
upsolved by chelly
chelly’s solution
注意到用洗衣机的一定是个后缀。
当
x
x
x固定的时候,答案就是
min
i
=
1
n
max
(
t
i
−
1
+
y
,
m
a
x
j
=
i
n
t
j
+
(
n
−
j
+
1
)
×
x
)
\min_{i=1}^n \max (t_{i-1}+y,max_{j=i}^n t_j+(n-j+1)\times x)
mini=1nmax(ti−1+y,maxj=intj+(n−j+1)×x)
f
(
i
)
=
t
i
−
1
+
y
f(i)=t_{i-1}+y
f(i)=ti−1+y是单调递增的,
g
(
i
)
=
m
a
x
j
=
i
n
t
j
+
(
n
−
j
+
1
)
×
x
g(i)=max_{j=i}^n t_j+(n-j+1)\times x
g(i)=maxj=intj+(n−j+1)×x是递减的,所以它们取min后是个凸函数,最优解只有一个,就是它的极值点。但我们不能三分求解(因为这不是严格凸函数)。
容易发现随着
x
x
x的增大,最优解
p
p
p是减小的,即是有决策单调性的。
所以我们可以
x
x
x从大到小枚举,判断目前
p
p
p是否左移,注意到
g
(
i
)
g(i)
g(i)相当于是有一些直线,每次问横坐标取
x
x
x的时候最大值是多少,这个可以维护一个凸包或者李超线段树。
时间复杂度
O
(
(
n
+
y
)
l
o
g
n
)
O((n+y)logn)
O((n+y)logn)。
注意到对于 x x x,决策 p p p不会小于 n − y / x + 1 n-y/x+1 n−y/x+1,所以对于每个 x x x,暴力枚举 p p p即可,时间复杂度 O ( y l o g y ) O(ylogy) O(ylogy)。
Dirty Replay
- B题抄了个筛欧拉函数的板子,结果板子错了,TLE了一发。
- A题二维数点算权重的时候,将一个矩形拆成4个点的时候,手滑写错了个坐标
- I题写决策单调的时候,没有处理好等于的情况