竞赛讨论区 > 小白月赛 120 出题人题解
头像
LargeRice16pro
发布于 09-05 21:08 浙江
+ 关注

小白月赛 120 出题人题解

A 牛牛的串串

用一个 map 维护字母出现次数,遍历 map 判断第二元是否依次加 1 即可。 时间复杂度:

牛牛的合数

特判 的无解。

反之大于 的偶数一定是合数,所以 为奇数输出 为偶数输出 即可。

牛牛的排列

分类讨论:

特判 时无解。

  • 为奇数,构造 即可
  • 为偶数,构造 即可

牛牛的子序列

每一个元素独立。

首先将 中每一段相同元素视作一个整体,然后贪心匹配,若 或者 的数量比 多则无解。

反之这一段的操作次数为

总操作次数就是每一段操作次数的最大值。

使用双指针维护合并,时间复杂度:

牛牛的约数

实际上这个问题约束很弱。

将原序列升序去重后,对于每个元素,如果直接枚举 ,就是 的。

而如果 开始枚举到 ,容易发现是很快就会找到解的,容易证明一个宽松的上界:,因为如果 ,那么 的答案就是 ,反正 跑暴力,最多跑 次暴力。

不过出题人认为远远达不到这个上界,但是不会证明更紧的上界。

以及一些其它的神秘写法,可能都是对的,而非错的。

牛牛的三角形

古典概型,计算合法方案数除以总方案数即可。容斥,合法方案等于总方案减去不合法方案。

根据三角形三边之和大于第三边性质,容易发现,若将选出来的边长升序,得到的相邻两个数的间距至少是一个斐波那契数列。

打表可得斐波那契数列在第 17 项后就会超过 1500,所以 时总是合法。

反之 dp 选出来的数即可, 表示 选出来 个数,上一个数是 的方案数,前缀和优化转移即可。

时间复杂度:

全部评论

(8) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐