P2556 [AHOI2002]黑白图像压缩

题目描述

选修基础生物基因学的时候, 小可可在家里做了一次图像学试验。 她知道:整个图像其实就是若干个图像点(称作像素)的序列,假定序列中像素的个数总是 8 的倍数, 于是每八个像素可以转换成一个叫做字节的数, 从而这个表示图像的像素序列就被转换成了字节的序列。

所谓的字节就是一个八位的二进制数(当然,为了便于书写,人们经常用它的十进制形式来表示)。这八个像素从前向后依次对应于字节从高位到低位的八个位, 用 0 来表示白色像素、 1 来表示黑色像素。 这种表示方法叫做位图法。 例如字节序列 210、 0、255 表示了 8*3=24 个像素, 由于对应的二进制形式是 11010010、 00000000、11111111, 所以这 24 个像素的颜色依次是黑、 黑、 白、 黑、 白、 白、 黑、 白、白、白、白、白、白、白、白、白、黑、黑、黑、黑、黑、黑、黑、黑。

小可可想: 其实图像中存在着很多连续的同色像素段, 也许换一种方式表达图像能够减少图像的数据量。 她的思路是: 把像素按照颜色分成若干个片段, 同一个片段中各像素颜色相同, 且连续的同色像素都在同一个片段中。同时已知每个片段的最大长度小于 128。

每一个像素片段都是用一个二进制字节量来表示, 最高位表示片段中像素的颜色, 而低七位表示片段中像素的数目。注意:不存在长度为 0 的像素片段。这种表示法叫做像素片段法。

例如位图表示法的字节序列 210、 0、 255 对应的像素序列可以分成七个片段,分别是: 11、 0、 1、 00、 1、 000000000、 11111111。如果用像素片段法来表示的话,二进制字节序列应该写成 10000010、 00000001、 10000001、00000010、 10000001、 00001001、 10001000, 而其对应于十进制字节序列就是 130、 1、 129、 2、 129、 9、 136。

像素片段法是否能有效地减少图像的数据存储量呢?小可可不知道如何用数学的方法加以证明, 于是决心对手头上的图像做些试验, 看看该方法是否真的有效。 请你编写程序完成图像信息的转换, 以协助小可可完成这项试验。

输入输出格式

输入格式:

文件中以一行的形式存放了一个图像的信息。第一个数是正整数

n ( n ≤ 80000 ),表明该图像有 n 个像素。随后有n/8个十进制形式的

字节量,表示该图像的位图信息。相邻数之间用一个空白字符隔开。

输出格式:

以一行的形式输出以像素片段表示法表示的图像信息,各个数都以

十进制的形式出现,相邻数之间用一个空白字符隔开。

输入输出样例

输入样例#1: 复制

8 0
输出样例#1: 复制

8
输入样例#2: 复制

24 210 0 255
输出样例#2: 复制

130 1 129 2 129 9 136

我们通过观察可以发现我们要分的小组是将1与0分开,挨着的1为1组,挨着的0为1组,(题目中有说明)接下来我们进行进制转化,现将十进制转为2进制,题目中说必须要够八位,不过的时候我们就往上补零,这个地方就要注意顺序的问题了,然后我们在将划分成的组分为1与0两类,当是1的时候最前面的数是1,也就是说我们要加上128,然后我们接下来的任务就是统计一下每一组内数的个数
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 1000010
using namespace std;
int n,x,s,sum,q[N],a[N];
int read()
{
    ,f=; char ch=getchar();
    ;ch=getchar();}
    +ch-',ch=getchar();
    return x*f;
}

int main()
{
    n=read(),n/=;
    ;i<=n;i++)
    {
        x=read();
        s=;
        while(x)
        {
            a[++s]=x%;
            x/=;
        }
        ) a[++s]=;
        ;i--)
         q[++sum]=a[i];
    }s=;
    ;i<=sum;i++)
    {
        ]) s++;
        else
        {
            ) printf("%d ",s);
            +s);
            s=;
        }
    }
    if(!q[sum]) printf("%d ",s);
    +s);
    ;
}

洛谷——P2556 [AHOI2002]黑白图像压缩的更多相关文章

  1. 洛谷P2556 [AHOI2002] 黑白图像压缩 [模拟]

    题目传送门 黑白图像压缩 题目描述 选修基础生物基因学的时候, 小可可在家里做了一次图像学试验. 她知道:整个图像其实就是若干个图像点(称作像素)的序列,假定序列中像素的个数总是 8 的倍数, 于是每 ...

  2. 洛谷——P2559 [AHOI2002]哈利·波特与魔法石

    P2559 [AHOI2002]哈利·波特与魔法石 题目描述 输入输出格式 输入格式: 文件中第一行有七个数,分别是 S1. S2 . …. S7 :第二行有两个数,依次分别是起点城市 i 和终点城市 ...

  3. 洛谷—— P2562 [AHOI2002]Kitty猫基因编码

    P2562 [AHOI2002]Kitty猫基因编码 题目描述 小可可选修了基础生物基因学.教授告诉大家 Super Samuel 星球上 Kitty猫的基因的长度都是 2 的正整数次幂 ), 全是由 ...

  4. 洛谷 P2559 [AHOI2002]哈利·波特与魔法石

    P2559 [AHOI2002]哈利·波特与魔法石 题目描述 输入输出格式 输入格式: 文件中第一行有七个数,分别是 S1. S2 . …. S7 :第二行有两个数,依次分别是起点城市 i 和终点城市 ...

  5. 洛谷 P2558 [AHOI2002]网络传输

    P2558 [AHOI2002]网络传输 题目描述 在计算机网络中所有数据都是以二进制形式来传输的. 但是在进行较大数据的传输时,直接使用该数的二进制形式加以传输则往往传输的位数过多. 譬如要传输 1 ...

  6. 洛谷 P2562 [AHOI2002]Kitty猫基因编码

    P2562 [AHOI2002]Kitty猫基因编码 题目描述 小可可选修了基础生物基因学.教授告诉大家 Super Samuel 星球上 Kitty猫的基因的长度都是 2 的正整数次幂 ), 全是由 ...

  7. LuoguP2556 [AHOI2002]黑白图像压缩 题解

    Content 题目描述太过于繁琐而无法简化,请前往原题面查看. 数据范围:\(1\leqslant n\leqslant 8\times 10^4\). Solution & Code 一个 ...

  8. 洛谷 P1169 [ZJOI2007]棋盘制作

    2016-05-31 14:56:17 题目链接: 洛谷 P1169 [ZJOI2007]棋盘制作 题目大意: 给定一块矩形,求出满足棋盘式黑白间隔的最大矩形大小和最大正方形大小 解法: 神犇王知昆的 ...

  9. 洛谷P2619 [国家集训队2]Tree I(带权二分,Kruscal,归并排序)

    洛谷题目传送门 给一个比较有逼格的名词--WQS二分/带权二分/DP凸优化(当然这题不是DP). 用来解决一种特定类型的问题: 有\(n\)个物品,选择每一个都会有相应的权值,需要求出强制选\(nee ...

随机推荐

  1. BZOJ1452 [JSOI2009]Count 【树套树 (树状数组)】

    1452: [JSOI2009]Count Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2693  Solved: 1574 [Submit][St ...

  2. 一个JavaScript反射使用的例子

    反射机制指的是程序在运行时能够获取自身的信息.例如一个对象能够在运行时知道自己有哪些方法和属性.在JavaScript中有一个很方便的语法来实现反射,即for(…in…)语句,其语法如下: 1 for ...

  3. 非阻塞式JavaScript脚本及延伸知识

    JavaScript 倾向于阻塞浏览器某些处理过程,如HTTP 请求和界面刷新,这是开发者面临的最显著的性能问题.保持JavaScript文件短小,并限制HTTP请求的数量,只是创建反应迅速的网页应用 ...

  4. 处理WebService asmx的经验

    项目的需求,需要和一个.net系统进行数据交换,合作方提供了一个WebService接口.这个与一般的PHP POST或GET传值再查库拿数据的思路有点不一样,需要用到SOAP模块,处理方法也很简单, ...

  5. hadoop之HDFS与MapReduce

    Hadoop历史 雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. 随后在2003 ...

  6. PRINT_TABLE 列以行形式显示

    在sqlplus,如果列比较多,往往会显示不够清晰,这时如果能把查询语句行转列就明了多了,在网上看到print_table存储过程:里面所设置的日期格式,可根据自己习惯修改 CREATE OR REP ...

  7. HASHMAP 深入解析

    http://blog.csdn.net/ghsau/article/details/16843543/

  8. 【Foreign】朗格拉日计数 [暴力]

    朗格拉日计算 Time Limit: 10 Sec  Memory Limit: 128 MB Description Input Output 仅一行一个整数表示答案. Sample Input 5 ...

  9. Android 全面插件化 RePlugin 流程与源码解析

    转自 Android 全面插件化 RePlugin 流程与源码解析 RePlugin,360开源的全面插件化框架,按照官网说的,其目的是“尽可能多的让模块变成插件”,并在很稳定的前提下,尽可能像开发普 ...

  10. [ CodeVS冲杯之路 ] P2492

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直 ...