HDU
来源:互联网 发布:淘宝管控记录中的商品 编辑:程序博客网 时间:2024/06/14 23:10
题意
输入 n m d, 以及一个 n * m 的矩阵。表示 该矩阵是有一个“原矩阵”通过以下变换得到的:
对于矩阵上的每个点,输入矩阵的值 = (原矩阵到该点哈密顿距离 <= d 的点)的距离的平均值。
要求输出原矩阵。
思路
Guass消元模板题
链接
https://vjudge.net/contest/176567#problem/I
代码
#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<cmath>using namespace std;const int maxn = 205;const double eps = 1e-8;double s[20][20], a[maxn][maxn], x[maxn];int equ, var;int Guass(){ int i, j, k, col, max_r; for(k= 0, col= 0; k< equ && col< var; k++, col++) { max_r = k; for(int i= k+1; i< equ; i++) if(fabs(a[i][col]) > fabs(a[max_r][col])) max_r = i; if(fabs(a[max_r][col]) < eps) return 0; if(k != max_r) { for(int 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+1; j< var; j++) a[k][j] /= a[k][col]; a[k][col] = 1; for(i= 0; i< equ; i++) if(i != k) { x[i] -= x[k] * a[i][k]; for(j= col+1; j< var; j++) a[i][j] -= a[k][j] * a[i][col]; a[i][col] = 0; } } return 1;}int main(){ //freopen("in.txt", "r", stdin); int d, tt = 0, n, m; while(1) { scanf("%d %d %d", &m, &n, &d); if(n == 0 && m == 0 && d == 0) break; if(tt ++) puts(""); for(int i= 0; i< n; i++) for(int j= 0; j< m; j++) scanf("%lf", &s[i][j]); equ = var = n * m; memset(a, 0, sizeof a); for(int i= 0; i< n; i++) for(int j= 0; j< m; j++) { int cnt = 0; for(int k= 0; k< n; k++) for(int p= 0; p< m; p++) if(abs(i - k) + abs(j - p) <= d) a[i*m+j][k*m+p] = 1, cnt ++; x[i*m+j] = cnt * s[i][j]; } Guass(); for(int i= 0; i< n; i++) { for(int j= 0; j< m; j++) printf("%8.2f", x[i*m+j]); puts(""); } } return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- 实验吧安全杂项--异性相吸
- Pat 1023. 组个最小数 (20)
- break和continue的区别和作用
- 理解JAVA Class文件,破解class文件的第一步
- 日常工作积累
- HDU
- MAC 下搭建OpenCV开发环境
- Git本地保存账号密码的删除或修改
- hdu 4507 吉哥系列故事——恨7不成妻 (数位DP求和)
- python 图像开闭运算
- 一锅大杂烩-------板子合集
- LCA(倍增)
- 输入金额,算出需付20,10,5,1元的张数
- HMAC和NMAC