hdu 3359 Kind of a Blur (高斯消元 浮点型)

时间:2022-12-15 17:42:56

题目链接

题意:

H * W (W,H <= 10) 的矩阵A的某个元素A[i][j],从它出发到其他点的曼哈顿距离小于等于D的所有值的和S[i][j]除上可达点的数目,构成了矩阵B。给定矩阵B,求矩阵A。

分析:

将所有矩阵A的元素看成自变量,一共有H*W个变量,每个矩阵B的元素是由这些变量组合而成的,对于固定的B[i][j],曼哈顿距离在D以内的A[x][y]的系数为1,其它为0,这样就变成了求H*W个变量和H*W个方程的线性方程组,高斯消元求解。这题数据量比较小,所以直接采用浮点数的高斯消元即可,需要注意的是,浮点数消元的时候为了避免精度误差,每次找最大的行,乘上一个小于1的系数进行消元,这样可以把误差降到最小。

本来很快就搞定的,但是脑残了,总是pE,后来又wa,一定要把b[][]变成浮点数,才行,不然会wa 有误差。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#define LL __int64
#define eps 1e-8
const int maxn = +;
using namespace std;
int equ, var;
double a[maxn][maxn], x[maxn]; int Gauss()
{
int i, j, k, max_r, col;
double tmp;
col = ; for(k = ; k<equ && col<var; k++, col++)
{
max_r = k;
for(i = k+; i < equ; i++)
if(fabs(a[i][col])-fabs(a[max_r][col]) > eps)
max_r = i; if(max_r != k)
for(j = k; j < var+; j++)
swap(a[k][j], a[max_r][j]); if(fabs(a[k][col]) < eps)
{
k--;
continue;
}
for(i = k+; i < equ; i++)
{
if(fabs(a[i][col]) > eps)
{
double t = a[i][col]/a[k][col];
a[i][col] = 0.0; for(j = col; j < var+; j++)
a[i][j] -= a[k][j]*t;
}
}
}
for(i = var-; i >= ; i--)
{
if(fabs(a[i][i]) < eps) continue;
tmp = a[i][var];
for(j = i+; j < var; j++)
if(a[i][j] != )
tmp -= a[i][j]*x[j]; //if(tmp%a[i][i] != 0) return -2;
x[i] = tmp/a[i][i];
}
return ;
}
int mht(int x1, int y1, int x2, int y2)
{
return abs(x1-x2)+abs(y1-y2);
} int main()
{
int n, m, d;
int f = , i, j, k, l;
double b[maxn][maxn];
while(cin>>m>>n>>d)
{
if(m==&&n==&&d==) break;
if(f)
cout<<endl;
f = ;
equ = n*m;
var = n*m;
memset(a, , sizeof(a));
memset(x, , sizeof(x));
for(i = ; i < n; i++)
for(j = ; j < m; j++)
cin>>b[i][j];
for(i = ; i < n; i++)
for(j = ; j < m; j++)
for(k = ; k < n; k++)
for(l = ; l < m; l++)
if(mht(i, j, k, l) <= d)
{
a[i*m+j][k*m+l] = ;
a[i*m+j][n*m] += b[i][j];
}
Gauss();
for(i = ; i < n; i++)
{
for(j = ; j < m; j++)
printf("%8.2lf", x[i*m+j]);
cout<<endl;
}
}
return ;
}

hdu 3359 Kind of a Blur (高斯消元 浮点型)的更多相关文章

  1. HDU 3359 Kind of a Blur&lpar;高斯消元&rpar;

    题意: H * W (W,H <= 10) 的矩阵A的某个元素A[i][j],从它出发到其他点的曼哈顿距离小于等于D的所有值的和S[i][j]除上可达点的数目,构成了矩阵B.给定矩阵B,求矩阵A ...

  2. HDU 5833 Zhu and 772002 (高斯消元)

    Zhu and 772002 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5833 Description Zhu and 772002 are b ...

  3. 2016ACM&sol;ICPC亚洲区沈阳站H - Guessing the Dice Roll HDU - 5955 ac自动机&plus;概率dp&plus;高斯消元

    http://acm.hdu.edu.cn/showproblem.php?pid=5955 题意:给你长度为l的n组数,每个数1-6,每次扔色子,问你每个串第一次被匹配的概率是多少 题解:先建成ac ...

  4. HDU 5119 Happy Matt Friends&lpar;DP &vert;&vert; 高斯消元&rpar;

    题目链接 题意 : 给你n个数,让你从中挑K个数(K<=n)使得这k个数异或的和小于m,问你有多少种异或方式满足这个条件. 思路 : 正解据说是高斯消元.这里用DP做的,类似于背包,枚举的是异或 ...

  5. HDU 5833 Zhu and 772002 &lpar;数论&plus;高斯消元&rpar;

    题目链接 题意:给定n个数,这n个数的素因子值不超过2000,从中取任意个数使其乘积为完全平方数,问有多少种取法. 题解:开始用素筛枚举写了半天TLE了,后来队友说高斯消元才想起来,果断用模板.赛后又 ...

  6. HDU3359 Kind of a Blur&lpar;高斯消元&rpar;

    建立方程后消元 #include<cstdio> #include<iostream> #include<cstdlib> #include<cstring& ...

  7. HDU 5833 Zhu and 772002(高斯消元)

    题意:给n个数,从n个数中抽取x(x>=1)个数,这x个数相乘为完全平方数,求一共有多少种取法,结果模1000000007. 思路:每个数可以拆成素数相乘的形式,例如: x1 2=2^1 * 3 ...

  8. hdu 3992 AC自动机上的高斯消元求期望

    Crazy Typewriter Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. HDU 5544 Ba Gua Zhen dfs&plus;高斯消元

    Ba Gua Zhen Problem Description During the Three-Kingdom period, there was a general named Xun Lu wh ...

随机推荐

  1. PHP -- four arithmetic operation

    PHP 生成 简单四则运算. Thanks for Open Source. 本代码基于 jiaych php四则运算计算函数实现. <?php /*基于jiaych php四则运算计算函数 h ...

  2. POJ 3181 Dollar Dayz(高精度 动态规划)

    题目链接:http://poj.org/problem?id=3181 题目大意:用1,2...K元的硬币,凑成N元的方案数. Sample Input 5 3 Sample Output 5 分析: ...

  3. 我的github今天大手笔分享,welcome——fork

    看项目名就知道是什么样子的demo,还包含了数据库文件,welcome fork!

  4. 201521044091 《Java学习笔记》 第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结.注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面 ...

  5. linux nginx搭配https

    微信小程序upload接口必须是https请求,所以就搭建https 1.申请ssl证书 这里用的是腾讯云提供的免费ssl. https://console.qcloud.com/ssl?_ga=1. ...

  6. 您是不是奇怪为什么 &lt&semi;script&gt&semi; 标签中没有 type&equals;&quot&semi;text&sol;javascript&quot&semi; 属性?

    在 HTML5 中该属性不是必需的.JavaScript 是 HTML5 以及所有现代浏览器中的默认脚本语言!

  7. Android APP开发入门教程-Button

    代码编写 做好准备工作后,终于可以开始写我们的hello android了,在开始编写代码之前,我们先了解几个文件: res/layout/main.xml App主窗体布局文件,你的应用长什么样都在 ...

  8. C&num;调用Windows&lpar;8&sol;10&rpar;自带的虚拟键盘

    以下是调用代码: private const Int32 WM_SYSCOMMAND = 274; private const UInt32 SC_CLOSE = 61536; [DllImport( ...

  9. BIOS备忘录之EC常用知识点

    BIOS工程师眼中常用的EC知识点汇总: EC的硬件架构 EC硬件结构上主要分为两部分:Host Domain和EC Domain Host Domain就是通过LPC与CPU通信的部分(LPC部分需 ...

  10. 导入数据库时出现ORA-01435&colon; 用户不存在

    报错信息: IMP-00003: 遇到 ORACLE 错误 1435 ORA-01435: 用户不存在 成功终止导入,但出现警告. 我的导入脚本为: imp system/*****@min file ...