HDU3359(SummerTrainingDay05-I 高斯消元)

时间:2023-02-15 19:01:09

Kind of a Blur

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2754    Accepted Submission(s): 751

Problem Description

Image blurring occurs when the object being captured is out of the camera's focus. The top two figures on the right are an example of an image and its blurred version. Restoring the original image given only the blurred version is one of the most interesting topics in image processing. This process is called deblurring, which will be your task for this problem.
In this problem, all images are in grey-scale (no colours). Images are represented as a 2 dimensional matrix of real numbers, where each cell corresponds to the brightness of the corresponding pixel. Although not mathematically accurate, one way to describe a blurred image is through averaging all the pixels that are within (less than or equal to) a certain Manhattan distance?from each pixel (including the pixel itself ). Here's an example of how to calculate the blurring of a 3x3 image with a blurring distance of 1:
HDU3359(SummerTrainingDay05-I 高斯消元)

Given the blurred version of an image, we are interested in reconstructing the original version assuming that the image was blurred as explained above.
HDU3359(SummerTrainingDay05-I 高斯消元)HDU3359(SummerTrainingDay05-I 高斯消元)HDU3359(SummerTrainingDay05-I 高斯消元)

 

Input

Input consists of several test cases. Each case is specified on H + 1 lines. The first line specifies three non negative integers specifying the width W, the height H of the blurred image and the blurring distance D respectively where (1<= W,H <= 10) and (D <= min(W/2,H/2)). The remaining H lines specify the gray-level of each pixel in the blurred image. Each line specifies W non-negative real numbers given up to the 2nd decimal place. The value of all the given real numbers will be less than 100.
Zero or more lines (made entirely of white spaces) may appear between cases. The last line of the input file consists of three zeros.
 

Output

For each test case, print a W * H matrix of real numbers specifying the deblurred version of the image. Each element in the matrix should be approximated to 2 decimal places and right justified in a field of width 8. Separate the output of each two consecutive test cases by an empty line. Do not print an empty line after the last test case. It is guaranteed that there is exactly one unique solution for every test case.
 

Sample Input

2 2 1
1 1
1 1

3 3 1
19 14 20
12 15 18
13 14 16

4 4 2
14 15 14 15
14 15 14 15
14 15 14 15
14 15 14 15

0 0 0

 

Sample Output

1.00 1.00
1.00 1.00

2.00 30.00 17.00
25.00 7.00 13.00
14.00 0.00 35.00

1.00 27.00 2.00 28.00
21.00 12.00 17.00 8.00
21.00 12.00 17.00 8.00
1.00 27.00 2.00 28.00

Hint

The Manhattan Distance (sometimes called the Taxicab distance) between
two points is the sum of the (absolute) difference of their coordinates.
The grid on the lower right illustrates the Manhattan distances from the grayed cell.

 

Source

 
高斯消元,居然是先输入宽,再输入高,被这个WA了好几发。。。
 //2017-08-05
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath> using namespace std; const int N = ;
const double eps = 1e-;
int n, m, d;
double G[N][N], A[N*N][N*N], x[N*N];
int equ, var; int Gauss(){
int i, j, k, col, max_r;
for(k = , col = ; 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]))
max_r = i;
if(fabs(A[max_r][col]) < eps)return ;
if(k != max_r){
for(j = col; j < var; j++)
swap(A[k][j], A[max_r][j]);
swap(x[k], x[max_r]);
}
x[k] /= A[k][col];
for(j = col+; j < var; j++)
A[k][j] /= A[k][col];
A[k][col] = ;
for(i = ; i < equ; i++)
if(i != k){
x[i] -= x[k]*A[i][k];
for(j = col+; j < var; j++)
A[i][j] -= A[k][j]*A[i][col];
A[i][col] = ;
}
}
return ;
} int main()
{
bool fg = true;
while(scanf("%d%d%d", &m, &n, &d)!=EOF){
if(!n && !m)break;
if(!fg)printf("\n");
fg = false;
memset(A, , sizeof(A));
for(int i = ; i < n; i++)
for(int j = ; j < m; j++){
scanf("%lf", &G[i][j]);
x[i*m+j] = G[i][j];
}
for(int i = ; i < n*m; i++){
int cnt = ;
for(int j = ; j < n*m; j++){
int x = i/m;
int y = i%m;
int dx = j/m;
int dy = j%m;
if(abs(x-dx)+abs(y-dy) <= d){
A[i][j] = 1.0;
cnt++;
}else A[i][j] = 0.0;
}
x[i] *= cnt;
}
equ = n*m;
var = n*m;
Gauss();
for(int i = ; i < n*m; i++){
if(i % m == m-)printf("%8.2lf\n", x[i]);
else printf("%8.2lf", x[i]);
}
} return ;
}

HDU3359(SummerTrainingDay05-I 高斯消元)的更多相关文章

  1. 【BZOJ-3143】游走 高斯消元 &plus; 概率期望

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2264  Solved: 987[Submit][Status] ...

  2. 【BZOJ-3270】博物馆 高斯消元 &plus; 概率期望

    3270: 博物馆 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 292  Solved: 158[Submit][Status][Discuss] ...

  3. &ast;POJ 1222 高斯消元

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9612   Accepted: 62 ...

  4. &lbrack;bzoj1013&rsqb;&lbrack;JSOI2008&rsqb;&lbrack;球形空间产生器sphere&rsqb; &lpar;高斯消元&rpar;

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...

  5. hihoCoder 1196 高斯消元&&num;183&semi;二

    Description 一个黑白网格,点一次会改变这个以及与其连通的其他方格的颜色,求最少点击次数使得所有全部变成黑色. Sol 高斯消元解异或方程组. 先建立一个方程组. \(x_i\) 表示这个点 ...

  6. BZOJ 2844 albus就是要第一个出场 ——高斯消元 线性基

    [题目分析] 高斯消元求线性基. 题目本身不难,但是两种维护线性基的方法引起了我的思考. void gauss(){ k=n; F(i,1,n){ F(j,i+1,n) if (a[j]>a[i ...

  7. SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元

    [题目分析] Matrix-Tree定理+高斯消元 求矩阵行列式的值,就可以得到生成树的个数. 至于证明,可以去看Vflea King(炸树狂魔)的博客 [代码] #include <cmath ...

  8. UVALive 7138 The Matrix Revolutions(Matrix-Tree &plus; 高斯消元)(2014 Asia Shanghai Regional Contest)

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...

  9. &lbrack;高斯消元&rsqb; POJ 2345 Central heating

    Central heating Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 614   Accepted: 286 Des ...

随机推荐

  1. 获取属性名:PropertyNameHelper

    获取属性名:PropertyNameHelper namespace NCS.Infrastructure.Querying { public static class PropertyNameHel ...

  2. 我只能说,CDH5真的*了!!!

    参考URL http://blog.csdn.net/yangzhaohui168/article/details/34185579 http://blog.csdn.net/yangzhaohui1 ...

  3. mysql优化----第一篇:综述

    一 系统层面  查看CPU和IO状态,确定瓶颈.增 更换设备 二   数据库层面 1 参数优化. 参考文章<mysql性能优化----调整参数>增大数据库内存缓存等设置. 参考 http: ...

  4. Eclipse开发前,常用设置

    设置工作空间的项目编码, 防止出现乱码    Window - Preferences - General - Workspace    将"Text file encoding" ...

  5. AngularJS DI&lpar;依赖注入&rpar;实现推测

    AngularJS DI(依赖注入) http://www.cnblogs.com/whitewolf/archive/2012/09/11/2680659.html 回到angularjs:在框架中 ...

  6. 2D射影空间,为何引入射影空间

    2D欧氏空间R2中,点的表示是A(x1,y1), B(x2,y2),二维参数,线的表示是L: y=kx+b,是二维参数: 如何表示点在线上面?可以扩展为(k,-1,b)* (x1,y1,1)t = 0 ...

  7. &period;do的消除

    其实就是在web.xml中去掉.do即可  那里有拦截器作用,什么样的文件可以进入前端控制器1

  8. Clustered Shading架构实现步骤

    最终决定越过Forward+,一步到位,直接调整至更先进的Clustered架构.步骤如下: 里程碑1:以CPU方式实现Light Culling,旨在理念验证,并与D3D10兼容里程碑2:以GPU ...

  9. 消息队列RabbitMQ与Spring

    1.RabbitMQ简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. 官网:http://www.rabbitmq.c ...

  10. c&num;关于路径的总结&lpar;转&rpar;

    来源:http://www.cnblogs.com/yugongmengjiutian/articles/5521165.html 前一段时间写代码时经常遇到获取路径问题,总是感觉有点乱,于是就总结了 ...