数论
tiany7
人一我十,人十我万
展开
-
数论变换 - 莫比乌斯反演篇
2020.8.17今天第一次屁股坐在椅子上学莫比乌斯反演的一天。本来是想让队友学的,现在队友不知道换了多少人了,也没几个真的能靠得住的,还都得看自己。其实学到现在这个程度,除了一些极其吃天赋的问题,基本只有没认真学和学会两种内容,自己原先觉得不会,但是只要肯坐在椅子上学那是能学个十有八九的,所以还是得好好学的。这个莫比乌斯函数就是用来加速求gcd,lcm,约数之类问题的问题。对于区间[1,i]和[1,j]的里面gcd为k的个数,我们有朴素n^2logn算法,对于超过1e5的数据这种算法显然过于疲软,那么原创 2020-08-18 14:42:19 · 639 阅读 · 0 评论 -
洛谷 P6523 「Wdoi-1」加密通信(数学 简单推柿子)
2020.7.11这道题就是找到一个相邻但不相等的地方求出来gcd然后再拓展,貌似不难,用双向队列很舒服代码:#include <bits/stdc++.h>using namespace std;#define limit (1000 + 5)//防止溢出#define INF 0x3f3f3f3f#define inf 0x3f3f3f3f3f#define lowbit(i) i&(-i)//一步两步#define EPS 1e-6#define FASTIO原创 2020-07-11 14:35:02 · 220 阅读 · 0 评论 -
洛谷P2563 质数和分解(欧拉筛 + 背包)
2020.7.7祝各位高考考生们旗开得胜,金榜题名。乾坤未定,逆风翻盘乃传统艺能。今天还有个很不好的消息就是我的签证可能要出问题了,估计大概率就是呆在国内某一个学校了,不过也蛮好的,P大说可以接收,但学校不知道能不能给力一些,另外估计留学生又要被网暴了。我似乎看见了微博上铺天盖地骂我们是后浪聚集地想在国内走捷径读top的骂声。现在部分网民真的是,光看见我们风光的时候了,我们不也是一样从题海里刷出来的?我们也曾经为了高考的题而整夜睡不着觉啊。当年一个班考试各项平均分超过重点班的普高学生,已经能够说明问题了原创 2020-07-07 13:29:01 · 416 阅读 · 0 评论 -
洛谷P1621 集合(欧拉线性筛 + bfs)
2020.6.30今天火力对决开始了,晚上回去玩。今天上午还算可以,有点成果,除了一道比较艹的拓展欧几里得,其他效率还行。等一下图书馆闭馆就去恰饭了。匆匆写下这篇解题报告。这个就是问从l到r有多少互相不含大于p的质因数集合。那么说到独立集肯定想到用并查集按秩合并,说到质因数肯定先把线性筛敲出来。首先想到bfs,从所有数字放进去。然后通过素数表判断,如果是倍数,那么就探索加上这个质因数的数字,合并,如果不是直接跳过就行了。这也算是比较好想的了。算法整体复杂度平方的,因为部分分看上去有80,我本来没想先拿满原创 2020-06-30 11:52:54 · 324 阅读 · 2 评论 -
洛谷P2568 GCD(欧拉线性筛 + 欧拉函数 + 前缀和)
2020.6.22占个坑等会写。(9:20)好了我回来了,窝快饿死了耶(11:59)好了,不出所料地一道题没写出来。看了两道dp感觉都非常容易想,然后就光荣挂了。看题解发现大家的答案都比我少一维,我自闭了。别人100我30分,大概这就是差距吧。早上看到了一道题,就是这个,刚开始看到本来想对质数表和前缀和进行二分。后来用突然想到可以在制作线性表的时候可以对质数统计答案,所有在n之前的质数的倍数进行统计答案。过了样例,之后只有30pt。我仔细品了一下我的程序发现我好像没有考虑倍数的倍数gcd不为1这个问题原创 2020-06-23 12:14:31 · 313 阅读 · 0 评论 -
洛谷P1349 广义斐波那契数列(矩阵快速幂)
2020.6.17不得已去学了上一道题,貌似都不是很难的样子。矩阵快速幂真的太好用了,推柿子神器。虽然template并不能用变量赋值,但是我发现一般好像很多时候矩阵的大小在做题之前就是已经确定的,那就可以上template了。这几天真的不太平。先是咖喱,然后学校突然宣布8.24开学(喵喵喵?一天两万多的确诊坚持开学您是认真的么?甚至还克扣了我们两天假期?)可以线上,线上课程安排也是打乱了的,万一一节课在cdt早上八点,然后一节课在晚上7点那还睡个毛线啊?还让6.26之前回复。甚至线上上课学费也一分不减原创 2020-06-17 13:35:07 · 248 阅读 · 1 评论 -
洛谷P1939 矩阵加速 (矩阵快速幂)
2020.6.17等下一篇再来说,这个就是为了做一道绿题练习地矩阵加速地方法。学过线性代数的应该都不会觉得很难。代码:#include <bits/stdc++.h>using namespace std;#define limit (10 + 5)//防止溢出#define INF 0x3f3f3f3f#define inf 0x3f3f3f3f3f#define lowbit(i) i&(-i)//一步两步#define EPS 1e-6#define FASTI原创 2020-06-17 12:13:09 · 246 阅读 · 0 评论 -
洛谷P3390 矩阵快速幂模板
2020.6.16最近要学数论和二分,数学工具必不可少。矩阵快速幂昨天看到知乎有人讲到,今天做到一道需要用矩阵才能做的题就回来打打基础。矩阵快速幂就是矩阵链乘 + 快速幂运算。超级简单。唯一不友好的一点是cpp的矩阵类真的魔鬼,md python程序员要是来用cpp处理数据估计能气死了都。为了能让代码正常地跑起来牺牲了好多封装性了。气死我了。行吧就这样吧。代码:#include <bits/stdc++.h>using namespace std;#define limit (100原创 2020-06-16 16:31:07 · 304 阅读 · 0 评论 -
洛谷P2822组合数问题(组合数学 + 前缀和)
2020.6.16这是noip某年提高组的一道题。非常不幸,这道题只拿了90pts, t了两个点,后来加了快读和快写之后95pts,可能是因为每次询问大概是O(nm)的。所以2000就会t了。这道题思路也非常清晰,2k的数据量数组开得下,可以用组合数递推公式来获得所有组合数模k的值。组合数递推公式如下:组合数递推方程 :f[i][j] = f[i - 1][j] + f[i - 1][j - 1];然后95pts的做法是用直接挨个查,遇到模k==0的情况对答案贡献就加一,最后输出。但这样有个问题,就原创 2020-06-16 12:11:47 · 433 阅读 · 0 评论 -
洛谷P1680 奇怪的分组(组合数学 + Lucas定理)
2020.6.15这道题是随机跳到的,一看思路非常显然,不就是Piot天天讲的“star and bar problem”么,高中的时候老谭其实也讲过,叫隔板法,印象深刻(毕竟那次期末炸了)。分组非空,且对特定组的放置有最低要求,可以转为如下问题,在n个坑里先放上必须要放的数目。总数减去必须要放的就是自由分组的部分,然后用隔板法公式C(n - 1, m - 1)即可求出正确答案。剩下用然后写组合数取模实现花了半小时,抄模板都没抄对。。。。我太菜+1. 用rep的m范围应该是m-1而不是m,wa了9个点,原创 2020-06-15 14:23:01 · 577 阅读 · 0 评论