题目链接:https://www.luogu.org/problem/P4783

题意:求矩阵的逆。

思路:高斯消元法求矩阵的逆,n为400,卡常,我是开了O2优化才AC的。。

AC代码:

#include<cstdio>
#include<cctype>
#include<algorithm>
#define R register int
using namespace std; const int maxn=;
const int MOD=1e9+;
int n; struct Matrix{
int m[maxn][maxn];
void SWAP(int x,int y){ //交换两行
for(R i=;i<=n;++i)
swap(m[x][i],m[y][i]);
}
void MUL(int x,int k){ //对一行乘上k
for(R i=;i<=n;++i)
m[x][i]=(1LL*m[x][i]*k%MOD+MOD)%MOD;
}
void MULADD(int x,int y,int k){ //将第y行乘上k加到第x行上去
for(R i=;i<=n;++i)
m[x][i]=((m[x][i]+1LL*m[y][i]*k%MOD)%MOD+MOD)%MOD;
}
}A,B; int qpow(int a,int b){ //求逆元
int ret=;
while(b){
if(b&) ret=1LL*ret*a%MOD;
a=1LL*a*a%MOD;
b>>=;
}
return ret;
} void Invmatrix(){
for(R i=;i<=n;++i){
if(!A.m[i][i]){
for(R j=i+;j<=n;++j)
if(A.m[j][i]){
B.SWAP(i,j);
A.SWAP(i,j);
break;
}
}
if(!A.m[i][i]){ //没有逆矩阵
puts("No Solution");
return;
}
int tmp=qpow(A.m[i][i],MOD-);
B.MUL(i,tmp);
A.MUL(i,tmp); //系数化为1
for(R j=i+;j<=n;++j){ //消元
tmp=-A.m[j][i];
B.MULADD(j,i,tmp);
A.MULADD(j,i,tmp);
}
}
for(R i=n-;i>=;--i) //回带
for(R j=i+;j<=n;++j){
int tmp=-A.m[i][j];
B.MULADD(i,j,tmp);
A.MULADD(i,j,tmp);
}
for(R i=;i<=n;++i){
for(R j=;j<=n;++j){
printf("%d",B.m[i][j]);
if(j!=n) printf(" ");
}
printf("\n");
}
} int main(){
scanf("%d",&n);
for(R i=;i<=n;++i)
for(R j=;j<=n;++j)
scanf("%d",&A.m[i][j]);
for(R i=;i<=n;++i){
for(R j=;j<=n;++j)
B.m[i][j]=;
B.m[i][i]=;
}
Invmatrix();
return ;
}

最新文章

  1. Js异步上传加进度条
  2. MySQL Cluster搭建与测试
  3. 使用 {$INCLUDE} 或 {$I} 指令管理和调用自定义函数
  4. JS中new都是干了些什么事情
  5. 十大关系数据库SQL注入工具一览
  6. Access-Control-Allow-Origin: Dealing with CORS Errors in Angular
  7. SGU 180 Inversions
  8. SlidingMenu实现app侧滑功能
  9. Java通过代理类实现数据库DAO操作
  10. WTL的核心机制
  11. WITH+HInt MATERIALIZE 不见得有效
  12. f.lux——自动调整屏幕色温减少眼睛疲劳,长时间玩电脑必备!
  13. kernel笔记——内核编译与进程管理
  14. python学习笔记——(一)基础设置
  15. R语言-增加图例
  16. THE OVERARCHING PROCESS OF TEST DESIGN
  17. Cross-site request forgery 跨站请求伪造
  18. linux生成SSH key
  19. 详解Tomcat配置及使用
  20. windows的类似shell 命令操作

热门文章

  1. Vue 中的 ref $refs
  2. learning express step(五)
  3. date/clock/hwclock/cal
  4. 【luogu4145】上帝造题的七分钟2 / 花神游历各国--区间开根-线段树
  5. 《剑指offer》数组中只出现一次的数字
  6. qt 布局管理按钮控件间有空隙?
  7. RX232串口发送
  8. Java 使用线程池分批插入或者更新数据
  9. 页面ajax请求传参及java后端数据接收
  10. HDU 2859 Phalanx ——(DP)