【zoj3645】高斯消元求解普通线性方程
题意:
给你一个方程组(含有12个方程),求(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11)
方程组的形式是一个二次方程组
(ai1-x1)^2 + (ai2-x2)^2 +(ai3-x1)^2 + (ai4-x2)^2 +(ai5-x1)^2 + (ai6-x2)^2 +(ai7-x1)^2 + (ai8-x2)^2 + (ai9-x2)^2 +(ai10-x1)^2 + (ai11-x2)^2 = dis ^2
题解:
二次方程组每个展开之后,每个和上一个相减,就可以得到11个线性方程。
这题就是高斯消元求解普通线性方程的模版题啦。
我的模版:
void gauss(int n)
{
int i,j,k,l,r;
double f;
for(i=;i<=n;i++)
{
r=i;
for(j=i+;j<=n;j++)
if(myabs(a[j][i])>myabs(a[r][i])) r=j;
if(r!=i) for(j=;j<=n+;j++) swap(a[i][j],a[r][j]); for(j=n+;j>=i;j--)//逆序枚举可以避免用变量保存a[k][i]/a[i][i],避免精度损失
for(k=i+;k<=n;k++)
a[k][j]-=a[k][i]/a[i][i] * a[i][j];
} for(i=n;i>=;i--)
{
for(j=i+;j<=n;j++)
a[i][n+]-=a[j][n+]*a[i][j];
a[i][n+]/=a[i][i];
}
}
代码:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std; const int N=;
double a[N][N],b[N][N],c[N]; double myabs(double x){return x> ? x:-x;} void output()
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
printf("%.2lf ",a[i][j]);
printf("\n");
}
printf("\n");
} void gauss(int n)
{
int i,j,k,l,r;
double f;
for(i=;i<=n;i++)
{
r=i;
for(j=i+;j<=n;j++)
if(myabs(a[j][i])>myabs(a[r][i])) r=j;
if(r!=i) for(j=;j<=n+;j++) swap(a[i][j],a[r][j]); for(j=n+;j>=i;j--)//逆序枚举可以避免用变量保存a[k][i]/a[i][i],避免精度损失
for(k=i+;k<=n;k++)
a[k][j]-=a[k][i]/a[i][i] * a[i][j];
} for(i=n;i>=;i--)
{
for(j=i+;j<=n;j++)
a[i][n+]-=a[j][n+]*a[i][j];
a[i][n+]/=a[i][i];
}
for(i=;i<=n-;i++) printf("%.2lf ",a[i][n+]);
printf("%.2lf\n",a[n][n+]);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
scanf("%lf",&b[i][j]);
scanf("%lf",&c[i]);
}
memset(a,,sizeof(a));
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
a[i][j]=b[i][j]-b[i+][j];
}
a[i][]=c[i+]*c[i+]-c[i]*c[i];
for(int j=;j<=;j++)
a[i][]+=b[i][j]*b[i][j]-b[i+][j]*b[i+][j];
a[i][]/=;
}
// output();
gauss();
}
return ;
}
【zoj3645】高斯消元求解普通线性方程的更多相关文章
- 【poj2947】高斯消元求解同模方程组【没有AC,存代码】
题意: p start enda1,a2......ap (1<=ai<=n)第一行表示从星期start 到星期end 一共生产了p 件装饰物(工作的天数为end-start+1+7*x, ...
- 【poj1830-开关问题】高斯消元求解异或方程组
第一道高斯消元题目~ 题目:有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关 ...
- POJ 1222 POJ 1830 POJ 1681 POJ 1753 POJ 3185 高斯消元求解一类开关问题
http://poj.org/problem?id=1222 http://poj.org/problem?id=1830 http://poj.org/problem?id=1681 http:// ...
- POJ 1830 开关问题(高斯消元求解的情况)
开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8714 Accepted: 3424 Description ...
- POJ 2065 高斯消元求解问题
题目大意: f[k] = ∑a[i]*k^i % p 每一个f[k]的值就是字符串上第 k 个元素映射的值,*代表f[k] = 0 , 字母代表f[k] = str[i]-'a'+1 把每一个k^i求 ...
- 【poj1222-又一道开关问题】高斯消元求解异或方程组
题意:给出一个5*6的图,每个灯泡有一个初始状态,1表示亮,0表示灭.每对一个灯泡操作时,会影响周围的灯泡改变亮灭,问如何操作可以使得所有灯泡都关掉. 题解: 这题和上一题几乎完全一样..就是要输出解 ...
- hdu 5833 Zhu and 772002 高斯消元
Zhu and 772002 Problem Description Zhu and 772002 are both good at math. One day, Zhu wants to test ...
- 【BZOJ1013】【JSOI2008】球形空间产生器sphere(高斯消元)
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1600 Solved: 860[Submi ...
- HDU4870_Rating_双号从零单排_高斯消元求期望
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4870 原题: Rating Time Limit: 10000/5000 MS (Java/Other ...
随机推荐
- lintcode-186-最多有多少个点在一条直线上
186-最多有多少个点在一条直线上 给出二维平面上的n个点,求最多有多少点在同一条直线上. 样例 给出4个点:(1, 2), (3, 6), (0, 0), (1, 3). 一条直线上的点最多有3个. ...
- Java设计
重构前 CustomDataChar | getConnection()findCustomers()createChar()displayChar() 重构后 CustomDataChar | da ...
- Swift & Unicode
Swift & Unicode emoji let == const https://www.runoob.com/swift/swift-basic-syntax.html
- 【WCF】WCF 附录 高级主题 配置服务配额设置
微软产品自带一个“默认安全”方案.这也包括了WCF,意味着WCF中的多种配置可以设置来阻止诸如DOS(拒绝服务访问)攻击.微软为很多基于一个单一计算机的开发环境选择这样的设置.这也意味着默认设置中的一 ...
- Qt安装与入门
一.Qt SDK1.2安装 准备QtSdk-offline-win-x86-v1_2_1.exe离线安装包. 安装QtSDK时注意不要有中文路径,空格以及特殊字符.可以自定义选择组件安装,也可以默认安 ...
- NOI1997
T1 竞赛排名 分析:模拟 超级大模拟,太弱了,写个模拟都要2个小时..写的又难看又麻烦..还需努力 var n,i,j,k:longint; t1:real; x,y:..,..] of real; ...
- python-输出颜色显示
显示颜色格式:\033[显示方式;字体色;背景色m...主题内容hello world...\033[0m \033 从这里开始标颜色................................. ...
- BZOJ1854:[SCOI2010]连续攻击游戏——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1854 https://www.luogu.org/problemnew/show/P1640 lxh ...
- BZOJ2453:维护队列——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2453 Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到 ...
- BZOJ3495 PA2010 Riddle 【2-sat】
题目链接 BZOJ3495 题解 每个城市都有选和不选两种情况,很容易考虑到2-sat 边的限制就很好设置了,主要是每个郡只有一个首都的限制 我们不可能两两之间连边,这样复杂度就爆炸了 于是乎就有了一 ...