AT1899 画像処理高橋君 题解

news/2024/12/21 21:11:12/

AT1899 画像処理高橋君

题目链接:AT1899 画像処理高橋君

原题是日文的,我就不翻译了(

题意:给出压缩后的图像,求压缩前的图像
压缩是指对于各个像素,在其周围8个方向的像素中,只要有一个黑色像素,其像素就会变黑的处理

从题意中第二句话可以初步推断出,只要是周围8个方向上都是黑色的像素就是压缩前存在的黑色像素
例如

###..
###..
.....

压缩前的图像就是

##...
.....
.....

这么说来只要扫一遍,把和白色像素相接的黑色像素全部变为白色不就好了?

但是如果是下面这种情况

###.
##.#
..##
..##

用刚才的思路做,会得到这样的图像

#...
....
....
...#

这样就出现了问题

如果把得到的这个图像压缩,得到的应该是

#...          ##..
....    ->    ##..
....          ..##
...#          ..##

这样就还得再检查一遍得到的图像是否合法

代码如下

#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[205][205];//记录压缩后的图像(即输入的图像)
char b[205][205];//用于输出压缩前的图像
int dx[9]={1,1,1,0,0,0,-1,-1,-1};//八个方向+原地
int dy[9]={1,0,-1,1,0,-1,1,0,-1};
signed main()
{cin>>n>>m;for(int i=0; i<n; i++)cin>>a[i];//输入for(int i=0; i<n; i++){for(int j=0; j<m; j++){int flag=0;for(int k=0; k<9; k++){int tx = i+dx[k];int ty = j+dy[k];if(tx>=0&&ty>=0&&tx<n&&ty<m&&a[tx][ty]=='.')flag=1;}if(flag)b[i][j]='.';//如果这个像素本来就是白的,或者这是个和白色像素相连的黑色像素else b[i][j]='#';//不和白色像素相连的黑色像素}}for(int i=0; i<n; i++){for(int j=0; j<m; j++){if(a[i][j]=='#')//检查压缩后的图像{int flag=0;for(int k=0; k<9; k++){int tx = i+dx[k];int ty = j+dy[k];if(tx>=0&&ty>=0&&tx<n&&ty<m&&b[tx][ty]=='#')flag=1;//该像素是压缩出来的}if(!flag)//得到的压缩前的图像 无法压缩为 压缩后的图像{cout<<"impossible"<<endl;//不是合法压缩出来的图像return 0;}}}}cout<<"possible"<<endl;//合法for(int i=0; i<n; i++){    for(int j=0; j<m; j++){cout<<b[i][j];}cout<<endl;}return 0;
}

转载请说明出处


http://www.ppmy.cn/news/772491.html

相关文章

zzuli 1899 985的最大和难题

Description 985有2 * n - 1个整数&#xff0c;他每次可以将其中n个数变号&#xff0c;操作次数不限&#xff0c;问他可以得到的最大和。 Input 第一行输入一个整数t&#xff0c;代表有t组测试数据。 每组数据占两行&#xff0c;第一行输入一个整数n&#xff0c;下面一行输入2*…

CodeForces - 1669A Division?

Codeforces separates its users into 44 divisions by their rating: For Division 1: 1900 \leq \mathrm{rating}1900≤rating For Division 2: 1600 \leq \mathrm{rating} \leq 18991600≤rating≤1899 For Division 3: 1400 \leq \mathrm{rating} \leq 15991400≤rating≤…

js中,sort()方法排序的4种写法-是否传参、是否多个属性值排序——array.sort(function(a,b))-a元素在前之a-b升序、b-a降序

js中&#xff0c;sort()方法排序的4种写法-是否传参、是否多个属性值排序——array.sort(function(a,b))-a元素在前之a-b升序、b-a降序 1、定义和用法 sort() 方法用于对数组的元素进行排序,并返回数组。 语法 array.sort(fun)&#xff1b;参数fun可选。规定排序顺序。必须是函…

Sicily 1899. Stars

1899. Stars Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Lucy loves stars very much. There are N (1 <= N <= 1000) stars in the sky. Assum

bzoj1899: [ZJOI2004]Lunch 午餐

题目 题解&#xff1a; 有一个贪心策略&#xff1a;吃饭时间越长的越早打饭 然后动规&#xff0c;f[i][j]表示前i-1个数&#xff0c;第一个队列恰好要j的时间的最晚集合时间 可以降维&#xff0c;把i去掉 初始化&#xff1a;f[0]0&#xff0c;其余为正无穷 第一个窗口打饭…

【Udacity项目】电商网站A/B测试

分析A/B测试结果 简介I - 概率II - A/B 测试III - 回归 简介 对于这个项目&#xff0c;你将要了解的是电子商务网站运行的 A/B 测试的结果。你的目标是通过这个 notebook 来帮助公司弄清楚他们是否应该使用新的页面&#xff0c;保留旧的页面&#xff0c;或者应该将测试时间延…

BZOJ1899 [Zjoi2004]Lunch 午餐 贪心+DP

题目传送门 https://lydsy.com/JudgeOnline/problem.php?id1899 题解 如果只有一个窗口&#xff0c;那么可以这样考虑&#xff1a;因为最后一个人打完饭的时间是固定的&#xff0c;那么不如就让吃饭最快的人最后打完。然后以此类推到前 \(n-1\) 个人……最终可以得出把所有的人…

信息学奥赛一本通——1899:【17NOIP提高组】小凯的疑惑

文章目录 1899&#xff1a;【17NOIP提高组】小凯的疑惑【题目描述】【输入】【输出】【输入样例】【输出样例】【提示】【样例说明】【数据范围】 代码 1899&#xff1a;【17NOIP提高组】小凯的疑惑 时间限制: 1000 ms 内存限制: 262144 KB 提交数: 1930 通过数: 1118 【题目…