A
Overview
大水题。
Description
给定 n n n, k k k, x x x 和一个长度 n n n 的数组 a a a,要求 a k a_k ak 后面插入 x x x,输出新的 a a a。
Solution
方法很多,可以直接暴力 vector.insert()
,也可以跑一遍再输出的时候加入。
B
Overview
对于 B 来说有些难,感觉 B > C。
Description
给两个长方体,求它们有没有交。
Solution
注意到三个坐标独立,所以考虑对于三个坐标分别求交。
可以看出它们构成六个形如
a
<
x
<
b
a<x<b
a<x<b 的不等式,不等式解集的交是好算的。
对于两个区间(解集)
(
a
,
b
)
(a,b)
(a,b) 和
(
c
,
d
)
(c,d)
(c,d),它们有交当且仅当
c
<
b
c<b
c<b 且
a
<
d
a<d
a<d。
对于每组判断即可。
C
Overview
大水题,但是样例更水。
Description
给出一个数列,可以删除 k k k 个元素,要求剩余的 max − min \max - \min max−min 最小。
Solution
显然如果把数列排序,一定从头或从尾删最快,剩余的一定是一个区间。
对区间的起点枚举即可。
D
Overview
有点暴力。
Description
给一个类似华容道的游戏,可以把相邻的两个棋子放入宽为 2 2 2 的空里,求起始状态到终止状态的最小步数。
Solution
直接暴力,map<string, int> vis
启动!
注意转移时要考虑这个点以及后面的点是不是空。
E
Overview
大板子,大水题。
Description
求树上哈密尔顿路径。
Solution
稍加思考即可发现 ans = n − d \text{ans} = n -d ans=n−d,其中 d d d 是树的直径。
F
Overview
大水题。
Description
求 n n n 以内有多少可以被写为 a b ( b ≥ 2 ) a^b\ (b\ge 2) ab (b≥2) 的数。
Solution
分治,但是前半段是
b
=
2
b=2
b=2 的情况,后半段是
b
>
2
b>2
b>2。
可以证明当
b
>
2
b>2
b>2 时,
Δ
ans
≤
1
0
6
\Delta \text{ans} \le 10^6
Δans≤106。
注意:这道题卡 sqrt
,sqrt
应该手写!
Code
我的 Atcoder 账号是 Eric_Cui,直接找就可以了。