高斯消元与行列式求值 part1
两道模板题,思路与算法却是相当经典。
先说最开始做的行列式求值,题目大致为给一个10*10的行列式,求其值
具体思路(一开始看到题我的思路):
1.暴算,把每种可能组合试一遍,求逆序数,做相应加减运算,一看就知道不是正解。
2.暴算2.0 用递归和代数余子式计算,但同样需计算逆序数。
3.一看就是知道是正解高斯消元,将行列式消为上三角,将对角线相乘。
看看代码:
#include<bits/stdc++.h> //喜闻乐见的万用头
using namespace std;
int n;
double a[][]; //因需处理小数,开double
int t=;
bool no;
double tim=; //储存约去系数int main(){
cin>>n;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++) scanf("%lf",&a[i][j]); //由于数据较少(10*10),不用快读
}
for(int i=;i<=n;i++){
if(!a[i][i]){ //判断当前处理数据是否为0,point
t=i;
while(!a[t][i]&&t<=n) t++;
if(t==n+){no=; continue;} //筛选首项不为0的行,进行交换,别忘记*=-1,最少wa4个
for(int j=;j<=n;j++) swap(a[i][j],a[t][j]);
tim*=-;
}
double x=a[i][i]; //将该行非0首项(之前的运算保证其不为0且为第一的非0数)
for(int j=i;j<=n;j++) a[i][j]/=x; //将每个a[i][i]除为1
tim*=x; //将消去系数累乘保存
for(int j=i+;j<=n;j++){
x=a[j][i];
for(int k=;k<=n;k++) a[j][k]-=x*a[i][k]; //将每行首项消为0,其余数做相同运算
}
/*for(int j=1;j<=n;j++){ //输出看看行列式消得对不对
for(int k=1;k<=n;k++) cout<<a[j][k]<<" ";
cout<<endl;
}*/
}
printf("%0.0lf",tim*a[n][n]); //输出系数与最后一项的乘积,取整
return ;
}
p.s.:“no”好像在这里没有用,不知为啥就写上了。。。
//以下是例题没有的特殊数据
/*8
5 5 10 9 5 9 10 4
3 3 6 1 4 6 7 10
1 1 2 10 8 9 8 7
6 2 3 4 8 3 6 9
1 2 6 3 2 7 8 9
9 5 4 5 1 7 3 10
2 4 6 10 10 5 7 8
4 5 6 10 4 7 5 2*/
point:(以后把需要较大量文字叙述的重点用文下注释解释)
如果a[i][i]为0,则在将要进行的化简运算中会出现 n/0 情况,
对于此类数字输出为“nan”(同学说这是暗示这道题难。。。)“not a number”
而对于此处出现的0,根据高斯消元的相关理论应该往下换,毕竟要组成下三角需把0“沉下去”,所以与下面换行。
p.s.:这道题给了我一点启示:
当初同学最快做出来得了11分,我初次尝试得了64分,这给了我做出来的动力,非常大的动力
我便梦想总有一天我要在全56级初学者之前a掉它,自此,我在家打开的窗口不再是虐杀原形,而是c++,为此,我改变了3次算法,代码重构好多次,提交。。。10几次是有了吧,乘积由64提到95,再提到96,最后查出致命错误终是a了,并达成了梦想。。。不总结了,只是希望以后万念俱灰的自己看到这个能。。。cheer下吧
高斯消元与行列式求值 part1的更多相关文章
- [置顶] hdu 4418 高斯消元解方程求期望
题意: 一个人在一条线段来回走(遇到线段端点就转变方向),现在他从起点出发,并有一个初始方向, 每次都可以走1, 2, 3 ..... m步,都有对应着一个概率.问你他走到终点的概率 思路: 方向问 ...
- 【BZOJ-4031】小z的房间 Matrix-Tree定理 + 高斯消元解行列式
4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 937 Solved: 456[Submit][Statu ...
- 6.10 省选模拟赛 小C的利是 高斯消元 矩阵行列式
LINK:小C的利是 想起来把这道题的题解写了 .一个常识:利是在广东那边叫做红包. 关于行列式的题目 不过我不太会23333..口胡还是可以的. 容易想到10分的状压.不过没什么意思. 仔细观察要求 ...
- POJ 1681 Painter's Problem (高斯消元 枚举自由变元求最小的步数)
题目链接 题意: 一个n*n 的木板 ,每个格子 都 可以 染成 白色和黄色,( 一旦我们对也个格子染色 ,他的上下左右 都将改变颜色): 给定一个初始状态 , 求将 所有的 格子 染成黄色 最少需要 ...
- POJ 1753 Flip Game (高斯消元 枚举自由变元求最小步数)
题目链接 题意:4*4的黑白棋,求把棋全变白或者全变黑的最小步数. 分析:以前用状态压缩做过. 和上题差不多,唯一的不同是这个终态是黑棋或者白棋, 但是只需要把给的初态做不同的两次处理就行了. 感觉现 ...
- Light OJ 1272 Maximum Subset Sum 高斯消元 最大XOR值
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011686226/article/details/32337735 题目来源:problem=12 ...
- BZOJ3270:博物馆(高斯消元)
Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博物馆.这座博物馆有着特别的样式.它包含由m条走廊连接的n间房间,并且满足可以从任何一 ...
- LG2447/BZOJ1923 「SDOI2010」外星千足虫 高斯消元
问题描述 LG2447 BZOJ1923 题解 显然是一个高斯消元,但是求的东西比较奇怪 发现这个方程组只关心奇偶性,于是可以用一个\(\mathrm{bitset}\)进行优化,用xor来进行消元操 ...
- Luogu P2447 [SDOI2010]外星千足虫 高斯消元
链接 给出的条件是异或类型的方程,可以直接用bitset优化高斯消元. 至于求K,在高斯消元时记录用到的最大的方程的编号即可. 代码: // luogu-judger-enable-o2 #inclu ...
随机推荐
- TypeScript|Angular踩坑笔记
今天按照Angular官网玩了下demo程序,踩了个小坑,记录下. TypeScript可以将变量申明为自定义类型,同时也不对该类型进行检查(不像C#,如果没有这个类型会报错) 比如下面这样: 如果我 ...
- Java设计模式系列-装饰器模式
原创文章,转载请标注出处:<Java设计模式系列-装饰器模式> 一.概述 装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能. 不同于适配器模式和桥接模式,装饰器模式涉及的是 ...
- rabbitmq高级消息队列
rabbitmq使用 什么是消息队列 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以很复杂,可以包含嵌入对象. 消息队列是一种应用间的通信方式,消息发送后 ...
- MySQL 笔记整理(19) --为什么我只查一行的语句,也执行这么慢?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 19) --为什么我只查一行的语句,也执行这么慢? 需要说明一下,如果M ...
- MySQL 笔记整理(14) --count(*)这么慢,我该怎么办?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 14) --count(*)这么慢,我该怎么办? 有时你会发现,随着系统 ...
- [TCP/IP] 传输层-ethereal 抓包分析TCP包
开启抓包工具抓取一个HTTP的GET请求,我的ip是10.222.128.159 目标服务器ip是140.143.25.27 握手阶段: 客户端 ===> SYN MSS=1460(我能接 ...
- 从零开始搭建服务器部署web项目
前言 该教程旨在完整描述建站过程,会将博主踩过的坑尽量详细的罗列出来.整个建站流程相对较为庞大,因此做了分解,同时适合大家有针对性的查询感兴趣的部分. 一.如何拥有自己的云服务器. 二.域名的购买与解 ...
- PDF转图片工具
点击下载( 提取码:1ll1 ) 软件功能基于mupdf,UI使用wxpython开发 功能: 支持pdf转图片,图片格式png 支持批量转换 使用: 第一步,点击按钮添加文档到列表,或直接将待转换文 ...
- 通用HttpClientUtil工具类
package com.*.utils; import java.io.IOException; import java.net.URI; import java.util.ArrayList; im ...
- 【原】无脑操作:EasyUI Tree实现左键只选择叶子节点、右键浮动菜单实现增删改
Easyui中的Tree组件使用频率颇高,经常遇到的需求如下: 1.在树形结构上,只有叶子节点才能被选中,其他节点不能被选中: 2.在叶子节点上右键出现浮动菜单实现新增.删除.修改操作: 3.在非叶子 ...