4-1068. 万绿丛中一点红

                          1068. 万绿丛中一点红(20)

时间限制
500 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
对于计算机而言,颜色不过是像素点对应的一个24位的数值。现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大。

输入格式:

输入第一行给出三个正整数,分别是M和N(<= 1000),即图像的分辨率;以及TOL,是所求像素点与相邻点的颜色差阈值,色差超过TOL的点才被考虑。随后N行,每行给出M个像素的颜色值,范围在[0, 224)内。所有同行数字间用空格或TAB分开。

输出格式:

在一行中按照“(x, y): color”的格式输出所求像素点的位置以及颜色值,其中位置x和y分别是该像素在图像矩阵中的列、行编号(从1开始编号)。如果这样的点不唯一,则输出“Not Unique”;如果这样的点不存在,则输出“Not Exist”。

输入样例1:
8 6 200
0 0 0 0 0 0 0 0
65280 65280 65280 16711479 65280 65280 65280 65280
16711479 65280 65280 65280 16711680 65280 65280 65280
65280 65280 65280 65280 65280 65280 165280 165280
65280 65280 16777015 65280 65280 165280 65480 165280
16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215
输出样例1:
(5, 3): 16711680
输入样例2:
4 5 2
0 0 0 0
0 0 3 0
0 0 0 0
0 5 0 0
0 0 0 0
输出样例2:
Not Unique
输入样例3:
3 3 5
1 2 3
3 4 5
5 6 7
输出样例3:
Not Exist

坑点:1,必须是独一无二的点才考虑,可以标记每个点出现的次数;
2,必须与周围八个点的像素差大于阈值才合题意,注意差值指的是abs()即绝对值;
3,最坑的是边界上的点也要考虑进去,无论周围几个,也就是说题目是让我们考虑周围的点,最多八个。

ac代码: https://www.patest.cn/submissions/3498025/source
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int TOL, tol;
int a[1005][1005];
//int map[1000005]; //数据太大,存不下
map<int, int > map0; //使用map 来标记是否唯一出现
int m, n;

int test(int i, int j){ //判断越界与否
if(i >= 1 && i <= n && j >= 1 && j <= m)
return 1;
else
return 0;
}

int main(){
cin >> m >> n >> tol;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++){
cin >> a[i][j];
map0[a[i][j]]++;
}
int x, y, count = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
// 要保证独一无二和差值, 看题解说边上的点也可以,无语了,没法改了,控制条件得重写
// 其实代码是从1开始的并且数组多开大了点,所以可以直接就避免越界,搜索可以直接将边界考虑进去
// 但是对于边界的也与补的零进行了比较!!!测试数据貌似没有考虑。无论是否考虑边界上的数与阈值的大小都能过!!!
if(map0[a[i][j]] == 1 && abs(a[i][j] - a[i - 1][j - 1]) > tol &&
abs(a[i][j] - a[i - 1][j]) > tol
&& abs(a[i][j] - a[i - 1][j + 1]) > tol && abs(a[i][j] - a[i][j - 1]) > tol
&& abs(a[i][j] - a[i][j + 1]) > tol && abs(a[i][j] - a[i + 1][j - 1]) > tol
&& abs(a[i][j] - a[i + 1][j]) > tol && abs(a[i][j] - a[i + 1][j + 1]) > tol){
count++;
x = i; y = j;
}
}
}
if(count > 1)
cout << "Not Unique";
if(count == 0)
cout << "Not Exist";
if(count == 1)
cout << "(" << y << ", " << x << "): " << a[x][y];
return 0;
}

时间: 2024-10-21 12:54:43

4-1068. 万绿丛中一点红的相关文章

PAT 1068. 万绿丛中一点红

PAT 1068. 万绿丛中一点红 对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入格式: 输入第一行给出三个正整数,分别是M和N(<= 1000),即图像的分辨率:以及TOL,是所求像素点与相邻点的颜色差阈值,色差超过TOL的点才被考虑.随后N行,每行给出M个像素的颜色值,范围在[0, 224)内.所有同行数字间用空格或TAB分开. 输出格式:

PTA乙级 (1068 万绿丛中一点红 (20分)(map))

1068 万绿丛中一点红 (20分) https://pintia.cn/problem-sets/994805260223102976/problems/994805265579229184 题目思路: 题目给定N*M个数字,要求找出只出现一次的数字,并且这个数字的相邻的数字都和他的差值必须大于给定的阈值tol.那么我们就找出出现次数为1的数字,然后判断该数字是否满足阈值这个条件.我们用map的key表示数字,value来表示key出现的次数. 题目代码: 1 #include <iostre

1068. 万绿丛中一点红(20)

对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入格式: 输入第一行给出三个正整数,分别是M和N(<= 1000),即图像的分辨率:以及TOL,是所求像素点与相邻点的颜色差阈值,色差超过TOL的点才被考虑.随后N行,每行给出M个像素的颜色值,范围在[0, 224)内.所有同行数字间用空格或TAB分开. 输出格式: 在一行中按照“(x, y): co

B1068 万绿丛中一点红

对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜色差充分大. 输入格式: 输入第一行给出三个正整数,分别是 M 和 N(≤ 1000),即图像的分辨率:以及 TOL,是所求像素点与相邻点的颜色差阈值,色差超过 TOL 的点才被考虑.随后 N 行,每行给出 M 个像素的颜色值,范围在 [ 内.所有同行数字间用空格或 TAB 分开. 输出格式: 在一行中按

“短命”魔咒被打破,网红食品正走向“经典”?

4月28日,上海首家丧茶店迎来正式开业,"一家哭着做茶的丧茶店,干了这杯小确丧",丧茶店这样介绍自己.其依靠与喜茶截然相反的丧气文化和打着只营业四天的旗号经营,一开门就吸引了过百万的人来排队,其充满"丧"气的菜单更是为网友所热议,一时间风头无两. 在这个互联网笼罩下的"网红时代",只要有话题有关注,什么都能火起来,饮食这一古往今来的头等民生问题被冠以"网红"的头衔也是意料之中的事情.近年来,网红食品层出不穷,西式烘焙的Fari

我们一起读《暗时间》

本文转载自 黯羽轻扬 但纯属原创! 人其实就是一台高配置的计算机(注意:是“高配”而不是“高效”).我们也有CPU而且是双核的,一个强大的核负责处理手头的任务,另一个则位于潜意识,但潜意识中的运算核心功能要稍差一些.所以我们虽然能够一心二用甚至多用,但在同一时刻我们只能专注于单一任务.我们也有内存,有cache,当我们全神贯注的时候,与当前任务相关的记忆就会被装入cache,此时就可以才思泉涌.滔滔不绝.而最近发生的事情被放在内存中,稍加思索就能想起来.至于几年前发生的事情,则被存放在硬盘中,需

读书的女人最有味道

女人味,时髦的名词,近来频频出现在各种传媒上.一般人们谈起女人味,总是会联想到性感.妩媚,联想到风姿绰约风情万种的女人,似乎只有这样才是女人味,但是"女人味"却是一个说不清道不明并且不可度量的概念,什么才是女人味?我们需要的是怎样的女人味?有人说女人味就像一道名贵的菜,本身没有味道,靠的就是调味. 作为现代的女性该怎么样才能成为一个有女人味的女人呢?一直以来,女人味的评判主角始终都是男性们!女人的风韵是一道不事张扬的风景,永远都是让男人回味无穷的风景线.用女性的眼光来说说女人的味道!

pat 1068 动态规划/Fina More Conis

1068. Find More Coins (30) Eva loves to collect coins from all over the universe, including some other planets like Mars. One day she visited a universal shopping mall which could accept all kinds of coins as payments. However, there was a special re

51nod 1068 Bash游戏 V3 博弈

1068 Bash游戏 V3 题目来源: Ural 1180 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次拿的数量只能是2的正整数次幂,比如(1,2,4,8,16....),拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出N,问最后谁能赢得比赛. 例如N = 3.A只能拿1颗或2颗,所以B可以拿到最后1颗石子.(输入的N可能为大数) Input 第1行:一个