蓝书(算法竞赛进阶指南)刷题记录——POJ2947 Widget Factory(带模高斯消元)

高斯消元快速入门 高斯消元快速入门 一、基本描述 学习一个算法/技能,首先要知道它是干什么的,那么高斯消元是干啥的呢? 高斯消元主要用来求解线性方程组,也可以求解矩阵的秩,矩阵的逆。在ACM中是一个有力的数学武器. 它的时间复杂度是n^3,主要与方程组的个数,未知数的个数有关。 那么什么是线性方程组呢? 简而言之就是有多个未知数,并且每个未知数的次数均为一次,这样多个未知数组成的方程组为线性... 阅读详情

题目:POJ2947.
题目大意:有 n n n种部件,每种部件生产一个的时间为 3 3 3~ 9 9 9天.现在给定 m m m条记录,每个记录为某种 k i k_i ki​个部件的生产时间为星期几 s i s_i si​到星期几 t i t_i ti​,以及这 k i k_i ki​个部件的类型,问每种部件单个生产所需的时间.若无解输出"Inconsistent data.",有多组解输出"Multiple solutions.".
1 ≤ n , m ≤ 300 , 1 ≤ ∑ k i ≤ 1 0 4 1\leq n,m\leq 300,1\leq \sum k_i\leq 10^4 1≤n,m≤300,1≤∑ki​≤104.

我们考虑设每个部件单个生产所需的时间为 x i x_i xi​,第 i i i条记录中第 j j j种部件的数量为 a i , j a_{i,j} ai,j​,那么可以列出一下方程组:
{ a 1 , 1 x 1 + a 1 , 2 x 2 + ⋯ + a 1 , n x n = t 1 − s 1    ( m o d    7 ) a 2 , 1 x 2 + a 2 , 2 x 2 + ⋯ + a 2 , n x n = t 2 − s 2    ( m o d    7 ) ⋮ a m , 1 x 1 + a m , 2 x 2 + ⋯ + a m , n x n = t m − s m    ( m o d    7 ) \left\{\begin{matrix} a_{1,1}x_1+a_{1,2}x_2+\cdots+a_{1,n}x_n=t_1-s_1\,\,(mod\,\,7)\\ a_{2,1}x_2+a_{2,2}x_2+\cdots+a_{2,n}x_n=t_2-s_2\,\,(mod\,\,7)\\ \vdots\\ a_{m,1}x_1+a_{m,2}x_2+\cdots+a_{m,n}x_n=t_m-s_m\,\,(mod\,\,7) \end{matrix}\right. ⎩⎪⎪⎪⎨⎪⎪⎪⎧​a1,1​x1​+a1,2​x2​+⋯+a1,n​xn​=t1​−s1​(mod7)a2,1​x2​+a2,2​x2​+⋯+a2,n​xn​=t2​−s2​(mod7)⋮am,1​x1​+am,2​x2​+⋯+am,n​xn​=tm​−sm​(mod7)​

这是一个典型的带模高斯消元,只是最后得到的解需要通过 ± 7 \pm7 ±7控制在 3 3 3~ 9 9 9范围内.

考虑高消时我们只需要把它消成一个三角矩阵,所以每当我们要处理第 i i i行第 j j j列的元素时,只需要把第 j j j列整一列的元素中,除了第 i i i行的全部消为 0 0 0.

这个时候若要消掉第 k k k行,我们只需要让第 k k k行同乘以 a [ i ] [ j ] a[i][j] a[i][j]且让第 i i i行同乘以 a [ k ] [ j ] a[k][j] a[k][j]来消元即可.

最后求解的时候由于系数不为 1 1 1,我们可以直接用费马小定理求解逆元.

解的情况判定与普通高斯消元类似.整个算法的时间复杂度为 O ( n 2 m ) O(n^2m) O(n2m).

注意,这种算法只能用于模数为质数的情况下.当模数为非质数时,这种算法会在同乘以一个数的地方出错.

代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
  using namespace std;

#define Abigail inline void
typedef long long LL;

const int mod=7,N=300;

int n,m,flag,ans[N+9];
struct matrix{
  int n,m,v[N+9][N+9];
}a;

int ri(){
  int x=0;
  char c=getchar();
  for (;c<'0'||c>'9';c=getchar());
  for (;c<='9'&&c>='0';c=getchar()) x=x*10+c-'0';
  return x;
}

int rc(){
  char c1=getchar(),c2;
  while (c1<'A'||c1>'Z') c1=getchar();
  c2=getchar();getchar();
  if (c1=='T') return c2=='U'?2:4;
  if (c1=='S') return c2=='A'?6:7;
  if (c1=='M') return 1;
  return c1=='F'?5:3;
}

int print(int x){
  x%=mod;
  if (x<3) x+=mod;
  printf("%d ",x);
}

int power(int a,int k){
  int s=1;
  for (;k;k>>=1,a=a*a%mod)
    if (k&1) s=s*a%mod;
  return s;
}

int Gauss(matrix a){
  int n=a.n,m=a.m,now=1,r,x,y;
  for (int i=1;i<=n;++i){
  	for (r=now;r<=m;++r)
  	  if (a.v[r][i]) break;
  	if (r>m) continue;
  	if (r^now) swap(a.v[r],a.v[now]);
	x=a.v[now][i];
  	for (int j=1;j<=m;++j)
  	  if (now^j){
  	  	y=a.v[j][i];
  	  	for (int k=1;k<=n+1;++k)
  	  	  a.v[j][k]=((a.v[j][k]*x-a.v[now][k]*y)%mod+mod)%mod;
	  }
	++now;
  }
  for (int i=1;i<=n;++i)
    ans[i]=a.v[i][n+1]*power(a.v[i][i],mod-2)%mod;
  for (int i=now;i<=m;++i)
    if (a.v[i][n+1]) return 0;
  return now<=n?2:1;
}

Abigail into(){
  a=matrix();
  a.n=n;a.m=m;
  int k,x,y;
  for (int i=1;i<=m;++i){
  	k=ri();x=rc();y=rc()-x+1;
  	a.v[i][n+1]=(y%mod+mod)%mod;
  	for (int j=1;j<=k;++j)
  	  ++a.v[i][ri()];
  	for (int j=1;j<=n;++j)
  	  a.v[i][j]%=mod;
  }
}

Abigail work(){
  flag=Gauss(a);
}

Abigail outo(){
  if (flag==0) puts("Inconsistent data.");
  else if (flag==2) puts("Multiple solutions.");
    else{
      for (int i=1;i<=n;++i)
        print(ans[i]);
      puts("");
	}
}

int main(){
  while (2333){
  	n=ri();m=ri();
  	if (n+m==0) return 0;
    into();
    work();
    outo();
  }
}
利用MATLAB 4f光学系统,在Python中进行弗劳恩霍夫衍射和傅里叶面滤波——用镜头模拟光学图像处理。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

利用MATLAB和Excel对逆流双管热交换器的热性能进行分析。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

模意义下的高斯消元

求解线性方程组是一个基础的问题,但如果是在模意义下,事情就没有那么简单了。现在给出一个方程组和模数(是一个质数),如何解出这个方程组呢(保证有唯一一组整数解)?首先,因为我们使用了整形数组来存储数据,计算中就不允许出现小数点,我们可以把两行各乘上一个数后(要保证主元被消去)再进行相减,而且相减的过程要在模意义下进行。注意,设相减的结果为,如果只是令,是存在问题的,因为可能是一个负数。那么令是否可行...

pig_dog_baby的博客 2275

利用MATLAB对5G NR波束成形技术的性能分析.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

[数学+模板] 高斯消元算法模板(模板)

文章目录1. 高斯消元算法+模板 1. 高斯消元算法+模板 883. 高斯消元解线性方程组 重点: 高斯消元 高斯消元能够在 O(n3)O(n^3)O(n3) 时间内求解 n 元一次线性方程组。也称高斯列主消元法。 具体算法步骤: 枚举每一列 c,循环做如下操作 找到绝对值最大的一行。即,找到列主元 将该行整体交换到最上面。准备进行列主消元 将该行第一个数变成 1。做初等行列变换 将下面所有行的第 c 列变成 0。做初等行列变换 处理完全部列,此时的增广矩阵即为一个上三角矩阵。最后一行的解已知,反

Y-puyu 的博客 1061

上市公司赫芬达尔指数、企业勒纳指数(1999-2025年)

上市公司赫芬达尔指数(HHI)和勒纳指数(LI)是衡量市场结构和市场势力(垄断力量)的两个重要指标 赫芬达尔指数(HHI)可衡量一个公司在市场中的相对份额或集中度,通过计算公司在市场中份额的平方和得出。数值越小,说明市场份额分布越分散,竞争程度越高;数值越大,说明市场集中度越高,少数企业占据较大份额,垄断程度越高 勒纳指数(LI)用于衡量企业的市场势力,即企业偏离完全竞争价格、制定高于边际成本的价格的能力,数值越接近1,表示企业市场势力越强,垄断程度越高 本文借鉴刘贯春等(2021)、孙茹峰和李楠博(2024)的思路和方法,分别测算上市公司赫芬达尔指数、勒纳指数: 赫芬达尔指数 = (公司营业收入/同行业同年营业收入合计)的平方和 企业勒纳指数 =(营业收入-营业成本-销售费用-管理费用)/营业收入 一、数据介绍 数据名称:上市公司赫芬达尔指数、企业勒纳指数 数据范围:上市公司 时间范围:1999-2025年 样本数量:85810条 数据来源:上市公司年报 更新时间:2026年11月 数据说明:内含原始数据、测算结果 二、数据指标 股票代码 股票简称 年份 省份 城市 区县 省份代码 城市代码 区县代码 行业代码 行业名称 赫芬达尔指数 勒纳指数 营业收入 营业成本 销售费用 管理费用 三、参考文献 [1]刘贯春,叶永卫,张军.社会保险缴费、企业流动性约束与稳就业——基于《社会保险法》实施的准自然实验[J].中国工业经济,2021,(05):152-169. [2]孙茹峰,李楠博.金融化对企业绿色转型意向的影响研究[J].管理学报,2024,21(11):1612-1620+1677. [3]张倩肖,段义学.数字赋能、产业链整合与全要素生产率[J].经济管理,2023,45(04):5-21. [4]伍兆祥,代吉林,

海康威视后台摄像头视频管理系统

海康威视后台摄像头视频管理系统,vue+py框架

高斯消元详解+模板

大佬讲解:   https://blog.youkuaiyun.com/pengwill97/article/details/77200372  大佬模板:  https://blog.youkuaiyun.com/pengwill97/article/details/77282328                        https://blog.youkuaiyun.com/Akatsuki__Itachi/arti...

September_的博客 1207

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

数论训练-高斯消元

数论训练-高斯消元 POJ 2065 SETI Description For some years, quite a lot of work has been put into listening to electromagnetic radio signals received from space, in order to understand what civilizations in d...

BenFromHRBUST的优快云博客 330

通信行业CentOS 7内核网络栈优化:高并发连接下UDP/TCP性能调优与系统资源管理

内容概要:本文聚焦于CentOS 7系统在通信行业高并发场景下的性能调优实践,重点围绕内核网络栈优化展开,涵盖UDP/TCP缓冲区调整、文件句柄与连接跟踪表扩容、TIME_WAIT状态复用、软中断分布优化及tuned工具的自动化调优。通过具体配置参数和实际案例(如VoIP软交换系统)深入解析各项调优措施的设计原理与实施效果,有效解决高CPS下丢包、连接失败等问题,并展望了向云化、eBPF等动态智能调优方向的发展趋势。; 适合人群:从事通信系统运维、网络开发或Linux系统性能优化的技术人员,具备一定操作系统和网络基础知识,工作经验1年以上的中初级工程师。; 使用场景及目标:①应用于软交换、媒体网关、信令网关等高并发通信设备的系统调优;②解决UDP丢包、conntrack表满、TCP连接队列溢出等典型性能瓶颈;③提升系统在小包高频、低时延要求场景下的稳定性和吞吐能力。; 阅读建议:建议结合实际生产环境或测试平台同步验证文中配置,重点关注参数背后的物理意义(如BDP、softirq、conntrack机制),并配合ss、conntrack、dmesg等命令进行调优前后对比分析,确保安全可控地实施变更。

从Elasticsearch的jvm.options读懂JVM参数的生效核验、内存分账与诊断兜底代码包

拿到一台机器和一个 Java 服务,怎样确认 JVM 实际吃进去了哪些参数,怎样给堆和堆外分配内存,怎样把 GC 日志、堆转储、异常栈这些“事后取证”的参数配齐,以及怎样在 JDK 8 与 JDK 9+ 之间安全迁移。 讲解的抓手是 Elasticsearch(下文简称 ES)的 jvm.options。这份文件经过 ES 团队多年打磨,又被无数生产集群验证过,几乎每一行都对应一个踩过的坑,是学习 JVM 参数最好的“样板间”。

高斯消元法讲解(【洛谷】3389)

题面Gauss消元题目描述给定一个线性方程组,对其求解 输入输出格式输入格式:第一行,一个正整数n第二至n+1行,每行n+1个整数,为a1,a2…an和b,代表一组方程。输出格式:共n行,每行一个数,第i行为xi (保留2位小数)如果不存在唯一解,在第一行输出”No Solution”.输入输出样例输入样例#1:1 1 1输出样例#1:1.00说明1<=n<=100, |ai|<=10000,

小蒟蒻yyb的博客 1552

2024 《计算机网络》实验教学指导书.doc

2024 《计算机网络》实验教学指导书.doc

hdu3364-高斯消元(取模)

列n个方程,表示每个灯会被哪些开关控制, 得到一个一个n*m的矩阵,最后一列为所要求的状态 则对这个(n+1)*(m)的矩阵高斯消元,得到方案数,答案爆int #include #include #include #include #include #include #include #include #include #include using

缺氧 2189

不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,提出了一套融合全局规划、动态避障与局部协同调整的综合路径规划方法。研究内容涵盖基于改进RRT算法与图论的全局路径规划、基于动态风险场和动态窗口法(DWA)的模型预测控制实现动态避障,以及基于分布式协同控制的多无人机局部路径协同策略。通过Matlab平台构建仿真环境,在多种典型城市交通场景下对所提方法进行了系统性验证,结果表明该方法在路径安全性、编队稳定性与任务效率方面表现优异。文章还深入探讨了算法的创新点与未来研究方向,为复杂城市环境下多无人机系统的自主协同提供了理论支撑与技术路径。; 适合人群:具备自动化、控制理论、计算机科学或相关领域基础知识,从事无人机系统、智能交通、路径规划、多智能体协同控制等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为城市空中交通系统中的多无人机安全、高效飞行提供可靠的路径规划解决方案;②支持在复杂、动态的城市场景中开展无人机自主导航、编队飞行与协同控制的技术研究与仿真验证。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法的具体实现细节、参数配置对性能的影响以及不同仿真场景下的实验设计,以深入理解各模块的集成逻辑与实际应用效果。

【选址和定容】模拟退火改进多目标粒子群算法在分布式电源选址和定容中的应用【IEEE69节点】(Matlab代码实现)

内容概要:本文研究了模拟退火改进多目标粒子群算法在分布式电源选址和定容中的应用,以IEEE69节点配电系统为算例进行仿真分析。通过融合模拟退火算法的强全局搜索能力与粒子群算法的高效局部收敛特性,构建了一种改进的多目标优化算法,用于解决分布式电源在配电网中的最优位置选择与容量配置问题。研究旨在实现多重优化目标,包括最小化网络有功损耗、提升节点电压质量、增强系统运行的经济性与稳定性。文中详细阐述了多目标优化模型的数学构建、算法的改进机制与实现流程,并基于Matlab平台完成了算法编程与仿真验证,结果表明所提方法在求解质量和收敛性能上均优于传统算法。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力,从事配电网规划、分布式能源系统优化、智能优化算法应用等相关领域的科研人员、工程师以及高校研究生。; 使用场景及目标:①解决高比例分布式电源接入背景下配电网的科学规划问题;②为新型电力系统中源网协调设计提供有效的优化工具;③为相关领域的科研工作提供可复现、可拓展的算法模型与仿真代码实例,支持进一步的算法对比与功能升级。; 阅读建议:建议读者结合提供的Matlab代码与IEEE69节点标准数据,动手复现实验结果,深入理解算法的参数设置、迭代过程与多目标折衷分析方法,并可根据实际研究需求修改目标函数或引入新的约束条件以适应不同的应用场景。

无刷直流电机BLDC无感+滑模观测器+转速电流双闭环PI控制(总共三个仿真模型)(Simulink仿真实现)

内容概要:本文档系统性地提供了无刷直流电机(BLDC)的高级控制策略仿真资源,聚焦于无位置传感器控制技术,重点实现了基于滑模观测器(SMO)的转子位置估算方法,并结合转速与电流双闭环PI控制结构,构建了完整的Simulink仿真模型体系。资源包含三个核心仿真模型:无感控制下的滑模观测器设计、双闭环PI控制器的参数整定与动态调节,以及系统整体的运行性能仿真分析。文档深入剖析了滑模观测器在反电动势提取与相位补偿中的关键技术,展示了其在不同工况下对电机启动、调速及负载扰动响应的鲁棒性表现,旨在帮助研究人员掌握BLDC在无传感器条件下的高精度控制实现路径,并为进一步引入模糊PID等先进控制策略提供对比基准与技术支撑。; 适合人群:具备电机控制理论基础、自动控制原理知识及Simulink建模经验,从事电气工程、自动化、电力电子或新能源驱动系统研究的科研人员、工程技术人员及高校研究生。; 使用场景及目标:①深入理解无刷直流电机无位置传感器控制的基本原理与实现流程;②掌握滑模观测器在转子位置与速度估算中的设计方法及其抗干扰特性;③学习并优化转速电流双闭环PI控制结构,提升系统动态响应性能与运行稳定性。; 阅读建议:建议结合Simulink模型进行同步仿真操作,重点关注滑模观测器的抖振抑制效果、系统启动过程的稳定性以及PI参数调节对动态性能的影响,同时可参照文档中提及的模糊PID等对比方案,拓展对先进控制算法的研究与实践应用。

Ollama模型路径迁移实战:Windows/Mac/Linux三系统保姆级教程(附常见问题排查)

本文提供了一份详细的Ollama模型路径迁移教程,涵盖Windows、macOS和Linux三大操作系统。针对默认安装路径占用系统盘空间的问题,文章指导用户如何安全移动模型文件、配置环境变量、重启服务,并附有迁移后的验证步骤与常见问题排查方法,帮助用户高效管理本地AI模型存储。

gray5的博客 538
上一篇: 蓝书(算法竞赛进阶指南)刷题记录——POJ3233 Matrix Power Series(分治+矩阵乘法)
下一篇: 蓝书(算法竞赛进阶指南)刷题记录——【WC2011】BZOJ2115 Xor(线性基)
hezlik
博客等级 码龄9年 111粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值