7.27 7.28集训——初等数论(2)

本文探讨了矩阵快速幂在解决斐波那契数列和有向图游戏中路径计数问题的应用,同时介绍了博弈论的基础概念,如公平组合游戏、有向图游戏和Nim游戏,并阐述了SG函数及其在解决复杂博弈问题中的作用。通过实例解析,展示了如何利用这些理论解决实际的算法竞赛题目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

矩阵快速幂

矩阵乘法

矩阵乘法性质

矩阵快速幂 O(n³logk)(n为矩阵大小)

斐波那契数列

广义斐波那契数列

例题1

例题2

高斯消元 O(n³)

 洛⾕ P3232 [HNOI2013]游⾛  

博弈论

公平组合游戏

有向图游戏

博弈论

Nim游戏

SG函数

SG定理

做题方法


矩阵快速幂

矩阵乘法

\bigl(\begin{smallmatrix} a_{11} &a_{12} &... &a_{1n} \\ a_{21} &a_{22} &... &a_{2n} \\ ... &... &... & ...\\ a_{n1}&a_{n2} &... &a_{nn} \end{smallmatrix}\bigr)\times \bigl(\begin{smallmatrix} b_{11} &b_{12} &... &b_{1n} \\ b_{21} &b_{22} &... &b_{2n} \\ ... &... &... & ...\\ b_{n1}&b_{n2} &... &b_{nn} \end{smallmatrix}\bigr)= \bigl(\begin{smallmatrix} c_{11} &c_{12} &... &c_{1n} \\ c_{21} &c_{22} &... &c_{2n} \\ ... &... &... & ...\\ c_{n1}&c_{n2} &... &c_{nn} \end{smallmatrix}\bigr)

其中c[i][j]为A的第i行与B的第j列对应乘积的和,即C_{ij}=\sum_{k=1}^{n}a_{ik}\times b_{kj}

矩阵乘法性质

结合律(AB)C=A(BC)

分配率(A+B)C=AC+BC,C(A+B)=CA+CB

数乘结合性k(AB)=(kA)B=A(kB)

矩阵快速幂 O(n³logk)(n为矩阵大小)

根据结合律,我们有若k=\sum 2^{i}\times a_{i},A^{k}=\sum A^{2^{i}} \times a_{i}

将快速幂中的乘法替换成矩阵乘法即可

斐波那契数列

f[i]=f[i-1]+f[i-2],f[1]=f[2]=1,求f[n],n<1e9

\begin{bmatrix}f(n) \\ f(n-1) \end{bmatrix}=\begin{bmatrix} 1 &1 \\ 1& 0 \end{bmatrix} \begin{bmatrix}f(n-1) \\ f(n-2) \end{bmatrix}

\begin{bmatrix}f(n) \\ f(n-1) \end{bmatrix}=\begin{bmatrix} 1 &1 \\ 1& 0 \end{bmatrix}\begin{bmatrix} 1 &1 \\ 1& 0 \end{bmatrix} \begin{bmatrix}f(n-2) \\ f(n-3) \end{bmatrix}

\begin{bmatrix} f(n) \\ f(n-1) \end{bmatrix}\begin{bmatrix} 1 &1 \\ 1& 0 \end{bmatrix}^{n-1}\begin{bmatrix}f(2) \\ f(1) \end{bmatrix}

广义斐波那契数列

f[i]=p\times f[i-1]+q\times f[i-2],f[1]=f[2]=1,求f[n],p,q,n<1e9

将单位矩阵改为\begin{bmatrix} p &q \\ 1&0 \end{bmatrix}即可

例题1

有 𝑁 块砖排成一排染色,每一块砖需要涂上红、蓝、绿、黄这 4 种颜色中的其中 1 种。且当这 𝑁 块砖中红色和绿色的块数均为偶数时,染色效果最佳。问一共有多少种方案可以使染色效果最佳

  • A[i] 表示 i 个格子,红绿均为偶数的染色方案数
  • B[i] 表示 i 个格子,红绿均为奇数的染色方案数
  • C[i] 表示 i 个格子,红绿有一个为偶数的染色方案数
  • A[i]=2\times A[i-1]+C[i-1]
  • B[i]=2\times B[i-1]+C[i-1]
  • C[i]=2\times A[i-1]+2\times B[i-1]+2\times C[i-1]
  • ans[i]=\begin{bmatrix}A[i] \\ B[i] \\ C[i] \end{bmatrix}=\begin{bmatrix} 2 & 0&1 \\ 0& 2& 1\\ 2& 2 & 2 \end{bmatrix}\times ans[i-1]

例题2

给一个n个点m条边的有向图,问到每个点的长度为k的路径有多少条(路径可走重复点和边)n<100k<1e9

邻接矩阵的k次方即为答案

高斯消元 O(n³)

解n元n次方程组

 洛⾕ P3232 [HNOI2013]游⾛  

⼀个⽆向连通图,顶点从1编号到N,边从1编号到M。 ⼩Z在该图上 进⾏随机游⾛,初始时⼩Z1号顶点,每⼀步⼩Z以相等的概率随机 选 择当前顶点的某条边,沿着这条边⾛到下⼀个顶点,获得等于这 条边的编号的分数。当⼩Z 到达N号顶点时游⾛结束,总分为所有获 得的分数之和。现在,请你对这M条边进⾏编号,使得⼩Z获得的总分的期望值最⼩。(N <= 500

  • 如果知道每条边期望被经过多少次,那么按照⼤⼩顺序安排边权即可。
  • 然⽽边数没有限制,可能在N2级别,搞不出对应的算法。 如果我们已知每个点期望经过次数呢
  • 经过除n以外的每个点后,都是⼀定要出去的,⽽出去时选边是随机 的。设f[i]为点i期望经过次数,g[i]为边i期望经过次数,则:g_[i]=\frac{f_{u}}{d_{u}}+\frac{f_{v}}{d_{v}}  E_{i}=(u,v),u\neq n,v\neq n
  • f_{i}=\left\{\begin{matrix}f_{1}=\sum_{(i,j)\in E,j\neq n}\frac{f_j}{degj}+1\; \; i=1 \\ f_{i}=\sum _{(i,j)\in E,j\neq n}\frac{f_{j}}{degj} 1<i<n \end{matrix}\right.
  • 对每个点列方程,进行高斯消元即可

博弈论

博弈论 ,是经济学的一个分支,主要研究具有竞争或对抗性质的对象,在一定规则下产生的各种行为。博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。

通俗地讲,博弈论主要研究的是:在一个游戏中,进行游戏的多位玩家的策略。对于算法竞赛中的博弈问题,

一般具有以下特征:博弈模型为两人轮流决策的非合作博弈。即两人轮流进行决策,并且两人都使用最优策略来获取胜利。博弈是有限的。即无论两人怎样决策,都会在有限步后决出胜负。公平博弈。即两人进行决策所遵循的规则相同。

公平组合游戏

公平组合游戏的定义如下:游戏有两个人参与,二者轮流做出决策,双方均知道游戏的完整信息;任意一个游戏者在某一确定状态可以作出的决策集合只与当前的状态有关,而与游戏者无关;游戏中的同一个状态不可能多次抵达,游戏以玩家无法行动为结束,且游戏一定会在有限步后以非平局结束。

公平游戏具有一个重要的性质:如果一个游戏者能够将状态A变为状态B,那么另外一个游戏者必然也能实现这样的操作。

有向图游戏

给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手轮流交替移动棋子(沿着有向边移动),无法移动者判定为输家。

我们不难发现:任何一个公平组合游戏都可以通过把每个局势堪称一个顶点,对每个局势和它的子局势连一条有向边来抽象成这个"有向图游戏”

博弈论

  • 必胜态:先手必胜的状态
  • 必败态:先手必败的状态

通过推理,我们可以得到以下三条定理

  1. 没有后继状态的状态是必败状态
  2. 一个状态是必胜状态当且仅当存在至少一个必败状态为它的后继状态
  3. 一个状态是必败状态当且仅当他的所有后继状态均为必胜状态

Nim游戏

n堆物品,每堆有ai个,两个玩家轮流取走任意一堆的任意个物品,但不能不取。无法操作的人失败

  • 那么当且仅当ai的异或和为0时,该状态为必败状态;否则该状态为必胜状态。
  • 证明:
  • 1.当异或和为0时,所有移动均会使得异或和不为0
  • 2.当异或和不会0时,一定存在某种移动使得异或和为0
  • 1.显然
  • 2.不妨假设异或和为k ≠ 0 如果我们要将a_{i}i改为a_{i}',则a_{i}'=a_{i}^{k},根据异或定义,一定有奇数个 a_{i}在二进制下k的最高位为 1。又因为a_{i}'在二进制下k的最高位为 0,所以满足这个条件的a_{i}'<a_{i},一定存在合法移动。

 SG函数

首先我们引入mex函数的定义:定义 mex函数的值为不属于集合 S中的最小非负整数,即:mex(S)=min{x}\; \; (x\notin S,x\in N)

例如mex({0,2,4})=1,mex({1,2})=0

对于状态x和它的所有k个后继状态y_{1},y_{2},...y_{k},定义SG函数SG(x)=mex\begin{Bmatrix}SG(y_{1}),SG(y_{2}),...,SG(y_{k}) \end{Bmatrix}

SG函数定理性质:

  1. 所有的终结点所对应的顶点,其SG值为0,因为它的后继集合为空集(所有的终结点都是必败点)
  2. 对于一个SG(X)=0的顶点X,它的所有后继都无法满足SG(y)!=0(无论如何操作,从必败点(P点)都只能进入必胜点(N点))
  3. 对于一个SG(X)!=0的顶点,必定存在一个后继点满足g(y)=0(从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点)(就是那种我们要走的方法))

SG定理

组合游戏:多个游戏的组合,每次可选择其中一个游戏进行一次操作,率先使所有游戏均不可操作者失败

SG定理:组合游戏的SG函数为各游戏SG函数的异或和

做题方法

  • 有向图游戏:
  1. 直接算SG函数(暴力or算法优化)
  2. 手算SG函数找规律
  3. 贪心
  • 非有向图游戏
  1. 转化成有向图游戏
  2. 人类智慧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值