高斯消元
大暴力
应用:求解线性方程
前置知识:矩阵操作
对于方程组
我们将他的系数和结果掏出来组成一个
目标:把矩阵化成一个上三角的形式
直观理解:
那么我们就能解出
步骤:
eg:
枚举待消主元,对于第
1.找到系数非零行
我们找到当前主元的系数绝对值最大且不为0的行,把他换到第
2.化简第 行系数
把主元的系数化为1,方便后续操作
3.消元
枚举后边的行,对于枚举到的第
依次搞过去就行了,大模拟
特判
-
无解:出现
的情况 -
无穷解:上述情况中
EXTRA:
异或方程组
取模方程组
P4035 [JSOI2008] 球形空间产生器
设球心
对于第
二次方刚好约掉,化简一下就是
开关问题
已知初始状态
首先有几个点要明确一下
-
结果与顺序无关
-
一个开关只需操作一次(第二次操作会抵消掉第一次操作,相当于没操作)
虽然似乎很显然,但其实挺重要的
我们把关系放到一个矩阵中,
这样定义是因为
设第
那么对于第
接下来考虑用什么运算叠加每一个开关造成的影响
这时有一个性质2来了:所有开关至多操作一次
也就是说:
进一步的,
结合经验,奇数个操作改变状态,偶数个不改变
所以可以使用异或
那么就得到了
但似乎有一个问题:这样的方程组怎么解呢,它又有几个解(即题目中的方案数)呢?
解法可以参考线性方程组的解法,加(没有减的转化,因为不需要化简系数)改异或,考虑解的数量
对于方程来说只有三种情况:无解,唯一解,无穷解
前两个好说,我们来想想无穷解的内涵
无穷解就是出现了有若干个变量可以取任意值,这些变量通常称为自由元
假设有
P2973 [USACO10HOL] Driving Out the Piggies G
设每个节点被污染的概率是
古典概型,所以只有加或乘
考虑炸弹如何转移到
- 节点1:要么瞬间爆炸,要么从别的点转移回来,并且炸弹没炸
- 其他节点:只可能转移而来
但这样太抽象了不像方程组,而且看上去是实时更新的
但是次数没有限制,不可能是遍历若干次后更新更出来的
其实可以这样理解:这些方程是最终态满足的条件
那就解罢
注,严格的证明涉及到期望,先咕咕
一个 ,由 组成的矩阵,每次操作可以选取一个方格,使得它加上 之后对 取模,周围的四个方格加上 后对 取模,请你在 操作次数内让整个矩阵变成 。输出一种方案
其实这个题略微类似于开关问题,只不过那道题模数是
先明确这道题中除法统一改为求逆元
设每个方格被修改次数是
类比开关问题可得:
一个方格受左邻右舍的影响,则有
这样一来有个难点:
要不直接开个三维数组吧
对于
接下来构造方案
我想想
对于自由元,直接取零,对于非自由元,移项后再翻成正的,取最终值
搞就完了
(PS:这道题中一个数的逆元就是他自己(doge))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?