AT_arc041_b 题解
本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读。
题目简述
给定一个 \(N \times M\) 的矩阵,此矩阵的每一个元素都向上、下、左、右 \(4\) 个方向同时扩散(原来的位置不保留)。
现给出原矩阵扩散后的矩阵,求原矩阵。
思路
对于扩散后的 \((i,j)\),是原矩阵的 \((i-1,j)\),\((i+1,j)\),\((i,j-1)\),\((i,j+1)\) 扩散而来的,那么就可以通过这 \(4\) 个点推断出原矩阵上 \((i,j)\) 的数。
例如:
010
101
010
这个样例中,只有 \((2,2)\) 周围 \(4\) 个方向都是非 \(0\) 数,所以从这个例子中就可推出计算原矩阵上 \((i,j)\) 的数的方程式了:
\]
那么就会产生一个疑问,对于边界有没有特殊情况?比如对于 \((1,1)\) 他的方程式带入就为:
\]
所以对于边界 \((0,1)\) 和 \((1,0)\) 的初始化就尤为重要,这里建议初始化为 \(0\),这样取 \(\min\) 之后就为 \(0\) 了。
处理完边界的初始化之后基本就没什么了,不过我们还是要思考一下,比如对于以下情况:
0000000
0001000
0030400
0209030
0050600
0003000
0000000
\((2,3)\) 并不是边界并且也不满足四周都是非 \(0\) 数,那么它是不是一种特殊情况?会不会不满足上面推出的方程式?答案是肯定的,因为 \((2,3)\) 的上、左两个方向的数是 \(0\),则取 \(\min\) 之后就一定为 \(0\) 了。
经过以上分析以及一些证明,基本就有大致的代码框架了:
#include<iostream>
using namespace std;
int n, m, mp[505][505]; // mp 记录地图
char c; // 临时储存
int main() {
cin >> n >> m;
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++) {
cin >> c;
mp[i][j] = c - '0'; // 转化为数字
}
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= m; j ++) {
int minn = min(min(mp[i - 1][j], mp[i + 1][j]), min(mp[i][j - 1], mp[i][j + 1])); // 计算 minn 值
cout << minn; // 可直接输出
// 把周围扩散的数减去
mp[i - 1][j] -= minn; mp[i + 1][j] -= minn;
mp[i][j - 1] -= minn; mp[i][j + 1] -= minn;
}
cout << endl; // 记得换行
}
return 0;
}
\]
AT_arc041_b 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- 简单粗暴通过 Binlog 日志来恢复 MySQL 数据
引言 Binlog 日志的主要作用: 1.增量备份. 2.主从复制. 操作步骤 1.登录 MySQL -> 执行 show variables like '%log_bin%'; 查询 binl ...
- .net C# System.Text.Json 如何将 string类型的“true”转换为布尔值 解决方案
直接上解决方法的代码 先定义一个转换顺,代码如下: public sealed class AnhBoolConverter : JsonConverter<bool?> { public ...
- JS中BOM事件,JS样式特效,表格对象和表单操作
DOM事件 1.DOM中的事件可以分为两类 1.浏览器行为 如:文档加载完成,图片加载完成 2.用户行为 如:输入框输入数据,点击按钮 (2).常见的DOM事件 onload 浏览器已完成页面的加载 ...
- .NET C#程序启动闪退,在安装或者程序文件下能正常运行,但通过路径却无法运行
.NET C#程序启动闪退,目录导致的问题 这是第2次踩这个坑了,很小的编程细节,容易忽略,所以写个博客,分享给大家. 1.第一次坑:是windows 系统把程序运行成服务,找不到配置文件,原因是以服 ...
- react 样式继承 属性传递
# 样式 import styled from 'styled-components' const Button = styled.button` font-size: 20px; border: 1 ...
- P2868
Sightseeing Cows G 我们先考虑如何求平均乐趣值. 1.总乐趣为 \(\sum^n_{i = 1}f_i \times s_i\),其中 \(f_i\) 为第 \(i\) 个点的乐趣值 ...
- C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 文件夹体积很大
现象:大量调用.p12证书时,C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 文件夹变得越来越大. 调用代码: X509Certificate2 x50 ...
- react 使用 error 报错
在使用react 中报错原因总结 01 // Warning: Can't call setState on a component that is not yet mounted. This is ...
- HttpServletRequest获取header参数 sign
HttpServletRequest获取header参数 sign //从请求头中获取参数 private static Map<String, String> getHeaders(Ht ...
- Java中的ThreadLocal和 InheritableThreadLocal
Java中的ThreadLocal和 InheritableThreadLocal package com.example.core.mydemo.java; /** * output * Threa ...