B3929 [GESP202312 五级] 小杨的幸运数 题解

因为一些众所周知的原因,不放代码。


分享一种考场思路:

\(a \le 10^7\), 顺序查找肯定会废,所以可以用一种类似埃氏筛的方法将所有满足条件的数标记一下,并将其加入一个答案数组 \(a\) 当中。然后每次查询只需要用lower_bound函数二分查找一下,假如找到了第 \(i\) 个:

\(a_i = x\), 直接输出;

否则,比较 \(\mid a_{i - 1} - x \mid\)\(\mid a_i - x \mid\),看看那个差值小输出。

最后算一下时间复杂度:预处理部分比埃氏筛快,查找部分二分时间复杂度最坏 \(O(N \log m)\),其中 \(m\) 就是查找出来的满足条件数数组大小,经计算,\(m\) 最坏是 \(500\) 左右,乘 \(N\) 显然是因为有 \(N\) 次查询,最后是 \(O(a \log \log a + N \log m)\) 不到,不会 TLE。

posted @ 2024-01-28 22:57  worker2011  阅读(133)  评论(0编辑  收藏  举报