数论
文章平均质量分 56
fire_lch316
这个作者很懒,什么都没留下…
展开
-
leetcode 2132. 用邮票贴满网格图
这题写了好久,一开始掉一个坑里面没出来。我一开始想的是列举邮贴的左上角贴在每个格子的情况,提前计算出前缀和判断是否可贴,可贴的话就把贴的那块区域全部都赋值为已访问。往后遍历的时候,已访问过的就不再考虑它作为左上角的情况,这样应该不会超时。并没有想到采用延迟更新。结果样例都没过,然后对着样例发现没有考虑每个格子作为其他三个角的情况,然后补成了每个格子作为四个角的情况,结果样例过了,交上去过了60+,wa了。然后静下心来再想了想,想到了正解。写第一个解法浪费了太多时间。怎么说呢,也不知道原创 2022-01-14 10:30:38 · 194 阅读 · 0 评论 -
线性筛(数学原理)
线性筛几年前理解过一次,有点模糊。今天重新理了一下,感觉这应该算非常容易理解的一种思路。问题:找出一个方法,在O(n)的时间内找到1-n内所有的素数面对这个问题我们可以先想简单的方法,然后层层递进:方法1:首先所有合数都可以拆成一个质数和另一个非1的数的乘积,即:合数x=prime[j]*i ;其中x表述一个合数(x<=n),prime[j]表示第j个质数,i就是一个非1的数。那么现在我们可以分别遍历prime[j]和i来筛出所有的合数,就是一个双重循环。中间可以加上prime[j]*原创 2021-09-06 10:50:17 · 876 阅读 · 0 评论 -
数论分块原理
数论分块模板题:,采用数论分块可以优化到。为书写方便以下都写做n/i首先我们要知道这一点:存在一些连续的x1,x2...xk,有n/x1=n/x2=...=n/xk。比如100/34=100/35=100/36=...=100/50。对于这些连续出现的,我们只需要知道出现次数,然后只用计算其中一个数就可以了,比如:(n/x1)*(xk-x1+1)。现在要找出n,x1和xk的关系。下图用数轴描述了i和n/i的部分取值。其中n/(i-b)=n/(i-b+1)=n/(i-b+2)=...=n.原创 2020-09-23 01:01:34 · 311 阅读 · 1 评论