题解原作者:2017级吴昊钟 NOI2019铜牌 难度:普及+/提高 算法一:暴力枚举在 $[ 0,n ]$ 的范围内暴力枚举 $m$ 的取值,直接统计 $[m,n]$ 之间的数中 $0$ 出现的次数为 $k$ 的最大 $m$ 的值。 时间复杂度:$O(N^2)$ 期望得分:$30$分 算法二:前缀和+扫描法在 $[0,n]$ 的范围内扫描,每一次进位使用类似高精度加法的方式维护 $0$ 出现的次数的变化情况,选取 $sum(n)-sum(m-1)$ 的值为 $k$ 的最大 $m$ 的值。 时间复杂度:$O(N)$ 期望得分:$50$分 算法三:前缀和+组合计数利用加法原理和乘法原理可以直接计算出 $f(n)$ 为 $[0,n]$ 之间的数中 $0$ 出现的次数,从 $n$ 开始倒序扫描选取第一个 $sum(n)-sum(m-1)$ 的值为 $k$ 的 $m$ 即可。也可以将算法二倒序维护解决。 时间复杂度:$O(N-M)$ 期望得分:$70$分 算法四:二分法+前缀和+组合计数在前一个算法的基础上利用二分法快速索引满足条件的 $m$ 的最大值即可。 时间复杂度:$O(log_{2}N)$ 期望得分:$100$分
题目2949 [SYOI 2018] WHZ 的数字
9
评论
2022-10-18 18:34:33
|