A 牛牛的串串
用一个 map
维护字母出现次数,遍历 map
判断第二元是否依次加 1 即可。
时间复杂度:
牛牛的合数
特判 的无解。
反之大于 的偶数一定是合数,所以
为奇数输出
,
为偶数输出
即可。
牛牛的排列
分类讨论:
特判 时无解。
为奇数,构造
即可
为偶数,构造
即可
牛牛的子序列
每一个元素独立。
首先将 中每一段相同元素视作一个整体,然后贪心匹配,若
或者
的数量比
多则无解。
反之这一段的操作次数为 。
总操作次数就是每一段操作次数的最大值。
使用双指针维护合并,时间复杂度:。
牛牛的约数
实际上这个问题约束很弱。
将原序列升序去重后,对于每个元素,如果直接枚举 ,就是
的。
而如果 从
开始枚举到
,容易发现是很快就会找到解的,容易证明一个宽松的上界:
,因为如果
,那么
的答案就是
,反正
跑暴力,最多跑
次暴力。
不过出题人认为远远达不到这个上界,但是不会证明更紧的上界。
以及一些其它的神秘写法,可能都是对的,而非错的。
牛牛的三角形
古典概型,计算合法方案数除以总方案数即可。容斥,合法方案等于总方案减去不合法方案。
根据三角形三边之和大于第三边性质,容易发现,若将选出来的边长升序,得到的相邻两个数的间距至少是一个斐波那契数列。
打表可得斐波那契数列在第 17 项后就会超过 1500,所以 时总是合法。
反之 dp 选出来的数即可, 表示
选出来
个数,上一个数是
的方案数,前缀和优化转移即可。
时间复杂度:。
全部评论
(8) 回帖