#1245. [GESP202306 四级] 图像压缩

[GESP202306 四级] 图像压缩

题目描述

一幅灰度图中,每个像素的灰阶是 00 到 255255 之间的整数。请选出出现次数最多的 16 个灰阶,按出现次数从多到少编号为十六进制的 0 到 F。出现次数相同,灰阶值较小的排在前面。

把每个像素替换为与其灰阶值之差的绝对值最小的已选灰阶的编号。如果有多个最近的灰阶,采用其中编号最小的一个。

输入格式

第一行是行数 nn。随后给出 nn 个等长的十六进制字符串,每两个字符表示一个像素,行内没有空格。

输出格式

首行按编号顺序写出 16 个选定灰阶,每个占两位,共 32 个十六进制字符。接着逐行输出压缩图,每个像素占一个十六进制字符,字母使用大写。

10
00FFCFAB00FFAC09071B5CCFAB76
00AFCBAB11FFAB09981D34CFAF56
01BFCEAB00FFAC0907F25FCFBA65
10FBCBAB11FFAB09981DF4CFCA67
00FFCBFB00FFAC0907A25CCFFC76
00FFCBAB1CFFCB09FC1AC4CFCF67
01FCCBAB00FFAC0F071A54CFBA65
10EFCBAB11FFAB09981B34CFCF67
01FFCBAB00FFAC0F071054CFAC76
1000CBAB11FFAB0A981B84CFCF66
ABCFFF00CB09AC07101198011B6776FC
321032657CD10E
36409205ACC16D
B41032657FD16D
8F409205ACF14D
324F326570D1FE
3240C245FC411D
BF4032687CD16D
8F409205ACC11D
B240326878D16E
83409205ACE11D

样例说明

样例中 AB、CF、FF 各出现 14 次,因此分别取得编号 0、1、2。

数据范围

10≤n≤2010\le n\le20,每行不超过 2020 个像素,图中至少有 1616 个不同灰阶。

来源

洛谷 B3851 · CCF GESP C++ 四级。