![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 89
axtices
这个作者很懒,什么都没留下…
展开
-
《算法竞赛进阶指南》------数论习题篇1
文章目录练习9:XOR BZOJ2115 (* 线性基。求图中异或和,可谓经典中的经典)练习10:新Nim游戏 BZOJ3105 (* NIM进阶版 NIM博弈+线性基)练习11:排列计数 BZOJ4517 (* 错位排序)练习12: Sky Code (* 容斥原理$莫比乌斯反演 经典)练习16 魔法珠 CH3B16 (SG博弈)练习17:Georgia and Bob (* NIM博弈三定理)**错误思路**:**NIM博弈三定理**:**正确思路**:练习9:XOR BZOJ2115 (*原创 2021-12-23 10:53:22 · 2387 阅读 · 0 评论 -
《算法竞赛进阶指南》------数论习题篇0
文章目录练习1:Gcd练习2 Longge's problem练习3: 青蛙的约会练习1:Gcd传送门题意:给定整数N求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对,N<=1e7题意:给定整数N求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对,N<=1e7题意:给定整数N求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对,N<=1e7.思路:我们可以依次枚举素数,对于一个素数P,如果gc原创 2021-08-21 16:20:39 · 272 阅读 · 1 评论 -
《算法竞赛进阶指南》数论篇(3)-组合计数,Lucas定理,Catalan数列,容斥原理,莫比乌斯反演,概率与数学期望,博弈论之SG函数
组合计数排列数从nnn个不同的元素中依次取出mmm个元素排成一列,产生的不同排列的数量为:AnmA_n^mAnm=n!(n−m)!\frac{n!}{(n-m)!}(n−m)!n!组合数从n个不同的元素中取出m个组成一个集合(不考虑顺序),产生不同集合的数量为:CnmC_n^mCnm=n!(n−m)!m!\frac{n!}{(n-m)!m!}(n−m)!m!n!一些简单性质:1.Cnm=Cnn−mC_n^m=C_n^{n-m}Cnm=Cnn−m2.Cnm=Cn−1m+Cn−1m−原创 2021-08-20 14:20:37 · 455 阅读 · 0 评论 -
《算法竞赛进阶指南》数论篇(2)-扩展欧几里得,线性同余方程,中国剩余定理,高次同余方程,矩阵乘法,高斯消元,线性空间,线性基
扩展欧几里得对于任意整数a,b,存在一对整数x,y,满足ax+by=gcd(a,b).对于任意整数a,b,存在一对整数x,y,满足ax+by=gcd(a,b).对于任意整数a,b,存在一对整数x,y,满足ax+by=gcd(a,b).证明:代码如下:int exgcd(int a,int b,int &x,int &y){ // a>b a*x+b*y=gcd(a,b); if(b==0){ x=1; y=0; return a;原创 2021-08-05 00:10:05 · 245 阅读 · 0 评论 -
题0689
ACM2019陕西省赛-ZOJ4128-0689题目大意:一个字符串,仅有0、6、8、9组成,选取一个子串,翻转,得到新的字符串,问新得到的字符串不同的有多少个?0,8翻转还是自己,6翻转是9,9翻转是6。思路不要模拟去做,肯定超时。如果每个数都不一样,那么翻转后不同的应该是(1+n)*n/2,就是子串的个数,再算上自己本身的,是(1+n)*n/2+1,我们把重复的减去就行了。去重,如果开头-末位是0-0,8-8,6-9,9-6的都是不行的。比如0680,翻转0680,其实还是翻转68,和开头原创 2020-10-10 13:18:44 · 106 阅读 · 0 评论 -
1003 Forgiving Matching
文章目录1003 Forgiving Matching题意思路PS:不太懂FFT,但又想知道原理。传送门 [FFT详解](https://blog.csdn.net/weixin_45819197/article/details/114890441)1003 Forgiving Matching题意给两个字符串s1s2(len1>=len2)s1s2(len1>=len2)s1s2(len1>=len2)问s2s2s2与是s1s1s1的子串进行匹配,在允许出错kkk个字符情况下,最原创 2021-07-29 11:00:02 · 112 阅读 · 0 评论 -
2021“MINIEYE杯”中国大学生算法设计超级联赛(2)补题
文章目录1010 I love permutation题意:给一个素数p和一个整数a。思路1010 I love permutation题意:给一个素数p和一个整数a。用bx=(a∗x)b_x=(a*x)bx=(a∗x)%p; 构建一个b序列,长度p-1(1<=x<=p−11<=x<=p-11<=x<=p−1)求b序列的逆序对数模2的结果。I love permutation思路结果是对二取余。 说明说明逆序对数要是奇数(输出1)或偶数(输出0)首先观察原创 2021-07-25 01:32:07 · 179 阅读 · 0 评论 -
《算法竞赛进阶指南》数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS
下述理论主要参考书目: 电子版pdf:算法竞赛进阶指南(p133-150)文章目录下述理论主要参考书目: [电子版pdf:算法竞赛进阶指南(p133-150)](http://www.j9p.com/down/536233.html)首先补充两个前置知识:约数和最大约数有关性质,可选择性看~有关素数筛的算法 [埃式nlog(n)nlog(n)nlog(n)&欧拉素数筛o(n)o(n)o(n)&大区间素数筛](https://blog.csdn.net/weixin_45819197/art原创 2021-07-23 14:05:26 · 627 阅读 · 0 评论 -
矩阵模板(矩阵快速幂算法用法)
矩阵快速幂算法应用矩阵解线性方程组入门视频在引入矩阵快速幂之前先引入问题:想必大家都不陌生斐波那切数.数字公式表达:f(n)= f(n-1)+ f(n-2) , f(1)=1; f(0)=0; n>=2;嗯很美观~ 然后呢?假如n很大呢, 比如 1e13 呢? 嗯哼? 能在一秒呢计算出吗。显然不可能呢~来–上矩阵,解决。先别急;来个简单例子 温习下线性方程组:2x+3y=zx-y=2z这里x,y,z均是未知数那么用矩阵表示:f(n-1) +f(n-2)=f(n);原创 2021-05-07 22:31:12 · 325 阅读 · 0 评论 -
FFT---(递归版和迭代版)( H. Needleand 和H.Rock Paper Scissors)
FFT快速傅里叶变换(加速多项式乘法)传送门多项式乘多项式 常规想法:时间o(n2n^2n2) FFT时间缩减至o(nlognnlognnlogn);多项式:f(x)=a0x0+a1x1+a2x2+........+anxn;f(x)=a_0x^0+ a_1 x^1 +a_2x^2+........+a_nx^n;f(x)=a0x0+a1x1+a2x2+........+anxn;前置知识1.点值表示法:f(点,点值) 表示一对适用(x0,f(x0)),x1,f(x1)),x2,f(x原创 2021-03-16 20:39:53 · 1000 阅读 · 0 评论 -
D. GCD of an Array(multiset+map)
D. GCD of an Array(multiset+map)D. GCD of an Array总结:1.multiset使用的一些细节2.分解质因数的想法3.(b/a)%mod=( b * a^(mod-2) ) % mod;multisetmultiset是多集合,与set区别在于,它是可以重复插入,就这点区别. 有以下的操作方法: insert(传入数值,插入数值) find(传入数值,寻找值返回最先出现的地址) erase(传入数值,删除一数值,如果有多个同原创 2021-03-11 18:39:21 · 104 阅读 · 0 评论 -
区间最大公约数(板子)
区间最大公约数(线段树,树状数组,差分)感悟:1.熟练线段树模板: 单点的查询2. gcd(a,b)=gcd(a,b-a); gcd(a,b,c)=gcd(a,b-a,c-b); gcd(a1,a2,a3,a4,a5…an)=gcd(a1,a2-a1,a3-a2,a4-a3,…an-an-1);注意:求区间[l,r]的最大公约数要有个原值保证差分的gcd有效,(后续详细说明).3.差分,树状数组 总结: 在[l.r]添加值,差分:相对值的不变 添加了值凸起,所以:b[l]加,b[r+1原创 2021-03-10 18:10:56 · 469 阅读 · 0 评论 -
组合数取模&逆元&Lucas定理
组合数取模(模板)初入数论的萌新分享一下我的组合数取模的想法.感悟:1.运用费马小定理2.分数如何取余。3. lucas定理:*C(n,m)%p=C(n/p,m/p)C(n%p,m%p);主要针对p是较小的数.p必须是素数,p必须是素数,p必须是素数(说三遍)费马小定理如下:(待会组合数取余用得上的)这里是引用费马小定理: p必须是整数( (x)^p ) % p=(x) % p;(x^p)%p=(x)%p; -----1式一式可推出:(x^(p-1))%p=1; //原创 2020-11-22 17:15:54 · 280 阅读 · 0 评论 -
快速幂&龟速乘&快速乘
快速幂模板#include<iostream>using namespace std;#define ll long long#define Mod 1e+7;ll fastPow(ll a,ll n){ ll base = a; ll sum =1; while(n){ if(n&1) sum*=base; base*=base; n>>=1;} return sum;}int main (){ int a,n; cin&g原创 2020-10-09 21:00:26 · 264 阅读 · 0 评论 -
题—C. Engineer Artem
奇技淫巧篇1题目链接:codeforces:C. Engineer Artem题意:给一数组,可以对该数组的每个值加1或者不加,每个值只能操作一次,问:打印修改后的数组,a[i][j]值与相邻值不一样。相邻位置比如:a[i-1][j],a[i][j-1],a[i+1][j],a[i][j+1].思路: 灵感来自0,1数组。 就比如5x5的数组。5 50 1 0 1 01 0 1 0 10 1 0 1 01 0 1 0 10 1 0 1 0不难发现该就数组就满足上述题意。该值没原创 2020-11-17 17:01:06 · 90 阅读 · 0 评论 -
埃式&欧拉筛&大区间素数筛
埃式素数筛定义:前n个数有多少是素数。并且用prime[]存素数。复杂度O(nloglogn).感悟:任何一个数都可以由若干个素数乘积表示。eg: 100= 2* 2 * 5 * 52.一个数n=a*b.那么a<sqrt(n),b>sqrt(n).#include<iostream>using namespace std;const int maxn=1e7; //仅仅限于1e7,太大就超时。 int prime[maxn]; //存放素数 i原创 2020-11-07 18:16:51 · 292 阅读 · 0 评论 -
题—Intelligent Warehouse
2020小米选拔赛1 A题题目链接解决思想:dp的优化,线性筛感悟:对dp理解。1.当前dp的改变不重复,每次的改变是独立的。2.当前的dp改变对后续dp的影响。3.dp是套娃,验证dp的正确性。题意:给n个数。特别注意给得数据的取值范围。选出一组满足:任意两个数有倍数关系,eg:可以组成一组 1和2,12,36。 4和12,36,72.不能组成一组: 1和2,12,36,48.输出一组数中最多的个数。思路:可以发现符合的一组数:前一个数是后一个数的倍数就可。不符合的36,4原创 2020-11-07 15:29:15 · 135 阅读 · 0 评论 -
题-K. Key Storage
K. Key Storagetime limit per test:3 secondsmemory limit per test:256 megabytesProblem DescriptionKarl is developing a key storage service. Each user has a positive integer key.Karl knows that storing keys in plain text is bad practice...原创 2020-10-13 14:50:05 · 120 阅读 · 0 评论