stdKonjac's Blog

An AC a day keeps the WA away ~

【图像压缩】

【题目描述】

给定一个序列,将其中所有的数转成8位二进制然后连接成一个长长的二进制数。然后将每一段连续的1取出来,每一段连续的0取出来,然后用一个8位二进制数来表示每一段,其中最高位为1表示这一段为1,最高位为0表示这一段为0,后面的7位随意组合表示这段区间的长度(不会超过255),然后再将这些二进制数转成10进制输出。

比如:210 0 255转换之后分别为11010010,00000000,11111111,所以连接后的数位110100100000000011111111,连续的片段为11,0,1,00,1,000000000,11111111 片段应该用10000010,00000001,10000001,00000010,10000001,00001001,10001000来表示,对应的10进制数就是130,1,129,2,129,9,136。

【输入格式】

文件中以一行的形式存放了一个序列的信息。第一个数是正整数n(n≤80000) 表明该序列的8位二进制连接的长度,接下来有n/8个十进制式的字节量,表示序列中的数,相邻两个数之间用一个空白字符隔开。

【输出格式】

以一行的形式输出转换后的序列,各个数都以10进制的形式出现,相邻数之间用一个空白字符隔开。

【输入样例1】

8 0

【输出样例1】

8

【输入样例2】

24 210 0 255

【输出样例2】

130 1 129 2 129 9 136

【数据规模】

对于100%的数据 n≤8000

水题,大模拟,注意二进制的转换(变量名打错WA掉QAQ,我真是SB)

下面是代码:

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.