ABC361 题解

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 aa<x<b不等式,不等式解集的交是好算的。
对于两个区间(解集) ( a , b ) (a,b) (a,b) ( c , d ) (c,d) (c,d),它们有交当且仅当 c < b cc<b a < d aa<d

对于每组判断即可。

C

Overview

大水题,但是样例更水。

Description

给出一个数列,可以删除 k k k 个元素,要求剩余的 max ⁡ − min ⁡ \max - \min maxmin 最小。

Solution

显然如果把数列排序,一定从头或从尾删最快,剩余的一定是一个区间。
对区间的起点枚举即可。

D

Overview

有点暴力。

Description

给一个类似华容道的游戏,可以把相邻的两个棋子放入宽为 2 2 2 的空里,求起始状态到终止状态的最小步数。

Solution

直接暴力,map vis 启动!

注意转移时要考虑这个点以及后面的点是不是空。

E

Overview

大板子,大水题。

Description

求树上哈密尔顿路径。

Solution

稍加思考即可发现 ans = n − d \text{ans} = n -d ans=nd,其中 d d d 是树的直径。

F

Overview

大水题。

Description

n n n 以内有多少可以被写为 a b   ( b ≥ 2 ) a^b\ (b\ge 2) ab (b2) 的数。

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 Δans106

注意:这道题卡 sqrtsqrt 应该手写!

Code

我的 Atcoder 账号是 Eric_Cui,直接找就可以了。

你可能感兴趣的:(综合题题解,c++)