Welcome to Konjac Binaries' blo|

Binaries

园龄:3年5个月粉丝:11关注:1

【学习笔记】2021.10.5 - 清北学堂数论讲解

ExGcd

gcd

辗转相除法,即gcd(a,b)=gcd(b,amodb)

lcm

lcm(a,b)=a×bgcd(a,b)

ExCrt

Excrt求解核心(合并方程)

大数翻倍法

void merge(int a1,int p1,int a2,int p2){
//x%p1=a1
//x%p2=a2
//x%p=a
	if(p1<p2) swap(a1,a2),swap(p1,p2);
//最坏复杂度是未翻倍的数,以上操作使得复杂度变为min(p1,p2) 
	int x=a1;
	while(x%p2!=a2) x+=p1;
//在方程一中,x对p1取模,所以加一点p1也无所谓,可以一只加p1直到它满足p2为止 
	return x%lcm(p1,p2); 
}
//卡掉以上代码:当且仅当只有两个1e9以上的大质数

计算取模(组合数)

n,m2000,p不限

暴力。

n109,m103,p=109+7

逆元。

n109,m103,p=任意数

对于两个阶乘,暴力枚举并约分,然后计算所有数的积。

n,m109,p100

使用卢卡斯定理,将n和m拆分成p进制,使得逆元得以产生,拆分后低位对齐,高位补零,然后对于每一位进行对应地运算。

容斥原理

给定若干集合的大小及若干集合交的大小,求若干集合并的大小。

显然,S1S2=S1+S2S1S2 ,容斥原理的核心思想正是如此。

公式:1inSi=S{S1,S2,,Sn}(1)|S|+1|SiSSi|

例1.n夫妻问题

现有n对夫妻做成一圈,对于每个方案(旋转后相同认为是同一方案),要求没有任意一对夫妻相邻。

n对夫妻随便坐

圆排列,方案为(2n1)!

处理

强制把一对夫妻绑在一起,此时这两个人可以视为一个单位,那么这些单位随便坐的方案为(2n1)!

所以,拎出一对夫妻绑在一起再随便坐的方案为 Cnm×(2n1)!×21

但是,两对夫妻绑在一起的会被减去两次,要加回来。

然后,三对的会多加一次,要减回去。

四次加回来,五次减回去……

然后就是容斥,最终公式为 i=0nCnm×(2n1i)!×2i×(1)i

例2.FoxJumping

给定一个大小为n×m的矩阵,要你从(0,0)走R步到(n,m),每次可以从(x,y)走到(x+dx,y+dy),要求 0dxTx0dyTydx+dy01ik,(dxi,dyi)(10×zi,10×zi)n,m800

f[R][N]表示走R步x轴走到n的方案,g[R][M]表示走R步y走到m的方案(不考虑是否合法),最终总方案就是f[R][N]×g[R][M]

接下来考虑只走不合法步骤的路径,设 h[i][z] 表示只走i步不合法,走到 (10×zi,10×zi) 的方案数。

所以总不合法的方案数为i=0k(1)iz=0min(n,m)10h[i][z]×f[ki][N10z]×g[ki][M10z]。(i步不合法到某个zi的位置的方案乘上剩下的步数的合法的方案)

我是伞兵,笔记不全,这里是Minus神仙的笔记以供补充

本文作者:Binaries

本文链接:https://www.cnblogs.com/Konjac-Binaries/p/15369261.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Binaries  阅读(139)  评论(5编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.