【题解】ABC300 F,G

F.More Holidays

题目分析:

考虑刻画一下我们选择是什么样子的。
考虑我们最后选择的 T 中的一段一定是形如:一个完整的 S 选择一个后缀 + 若干个完整的 S + 一个完整的 S 的前缀。
这样的话就启示我们直接枚举这个前后缀选择的是什么,然后就可以很快算出来了,但是枚举前后缀是 O(n2) 的。
考虑优化,其实枚举两个实在是太亏了,考虑只枚举一个可不可以。
假设我们只枚举第一个 S 的删去哪一个前缀,其实就是选择哪一个后缀,假设这个必须要删去的前缀里有 t 个 x,那么其实也就是说我们从 T 的前缀里最多选择 t+k 个 x,询问最多使得多少个 o 联通,这个就是直接二分就可以完成了。

G.P-smooth number

题目分析:

看到 P 那么小,显然可以想到直接搜出来有哪些素数,然后就是枚举这些素数各自选了多少个。
这样看上去复杂度并不是很劣,因为我们选择的总个数不会超过 log2n
但是其实看一下样例就知道,直接爆搜是不行的,因为最劣有 2×109 个答案。
但是看到答案数其实不是很多,所以就其实我们直接记忆化,也就是说对于 n 比较小的情况的方案数记下来,以后直接用。
大概记到 106 就可以通过这个题了。

posted @   linyihdfj  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2022-05-03 【学习笔记】拉格朗日插值
点击右上角即可分享
微信分享提示