2024牛客寒假算法基础集训营6
A. 宇宙的终结
思路:
- 根据题目意思,我们需要将一个数质因数分解,然后求一下质因子是否只有
3
个数
时间复杂度:
1 | signed main() { |
B. 爱恨的纠葛
思路:
- 只需要维护一个最小值即可,其他的位置可以随便放数,只需保证一个位置的差值最小即可
- 可以用二分查找来求最小差值,然后将其填入相应位置即可
时间复杂度:
1 | constexpr i64 inf = 1LL << 60; |
C. 心绪的解剖
思路:
- 个人感觉这题主要考察时间复杂度的计算,因为斐波那契数列的第
45
项就已经比1e9
大了,所以我们只需在询问外进行初始化即可 - 然后询问的时候查表
时间复杂度:
1 | signed main() { |
D. 友谊的套路
思路:
- 五局三胜,那么
时间复杂度:
1 | signed main() { |
E. 未来的预言
思路:
- 模拟即可
时间复杂度:
1 | signed main() { |
I. 时空的交织
思路:
- 这是个结论题,只需要维护最大子段和乘最大子段和,以及最小子段和乘最小子段和
时间复杂度:
1 | constexpr i64 inf = 1LL << 60; |
J. 绝妙的平衡
思路:
- 首先,我们将所有的节点都置为
1
,然后选取节点置为2
,当出现一个子树的权值和为1
,那么一定无解,我们无法在他的下面进行修改 - 如果出现某个红色节点的子树的权值和
mod 3 == 1
,那么我们可以修改他的某一个未修该的节点和当前这个节点,将其修改为2
,其子树权值增量为2
,这样这个子树的权值mod 3
就为0
,然后修改完就把这个子树的权值和给删除 - 如果出现某个红色节点的子树权值和
mod 3 == 2
,那么我们直接把这个点赋值为2
,其子树权值增量为1
,然后删除这个子树
时间复杂度:
1 | signed main() { |
F. 命运的抉择
思路:
- 数组
a
中的任何一个元素和数组b
中的任何一个元素的gcd(x, y) = 1
,说明数组a
里的每一个数和数组b
里的每一个数都互质 - 首先我们将每一个数分解质因数,然后将每一个拥有相同质因子的数列入同一个集合,只要最后出现两个或两个以上的集合,那么就是可行的,如果最后只有一个集合,就一定是不行的
时间复杂度:
1 | struct DSU { |