UVa 213 信息解码 (模拟 && 二进制)
题意 :对于下面这个字符串 0,00,01,10,000,001,010,011……. 首先是长度为1的串,然后是长度为2的串,以此类推。不存在全为1的串。 你的任务是编写一个程序。首先输入一个代码头(例如AB#TANCnrtXc),则上述序列的每个串依次对应编码头的每个字符。例如,0对应A,00对应B,01对应#…,0000对应c。接下来是编码文本(可能由多行组成,你应当把他们拼成一个长长的01串)。编码文本由多个小节组成,每个小节的前3个数字代表小节中每个编码的长度,用二进制表示,然后是个字符的编码,以全1结束。编码文本以000结束。
分析 :有两个重要点,首先如何建立字符和所给规则二进制之间的一一对应的关系? 在数据可能多行组成的情况下,如何方便地读取数据进行处理? 对于第一个问题,如果使用map那对于0、00、000的情况只能使用字符串形式进行映射,比较麻烦,可以考虑二进制转化为十进制然后用数组,使用len[长度][数值],表示长度表示二进制的长度,数值表示二进制转化为对应十进制的值是多少,然后整个数组的值就是对应的字符。然后在有多行的情况下,可以考虑编写一个readch()函数来跳过'\n'和'\r’读取数据,之后的便很好模拟了。
inline char readch() { int ch; while(true){ ch = getchar(); if(ch!='\r' && ch!='\n') return ch; } }
经验 :多行的读入技巧readch()、二进制长度与十进制数值之间的关系是len = pow(2, n) - 1,且题目中不包含全1的二进制的话,那就是从0~pow(2, n)-2递增了。
#include<bits/stdc++.h> using namespace std; ][]; inline char readch() { int ch; while(true){ ch = getchar(); if(ch!='\r' && ch!='\n') return ch; } } int getcode() { memset(len, , sizeof(len)); len[][] = readch(); ; i<=; i++){ ; j<(<<i)-; j++){ int ch; ch = getchar(); ; ; else len[i][j] = ch; } } } int readint(int Len) { ; + (readch() - '); return ret; } int main(void) { // freopen("in.txt", "r", stdin); while(getcode()){ while(true){ ); ) break; while(true){ int v = readint(position); <<position)-) break; putchar(len[position][v]); } } puts(""); } ; }
UVa 213 信息解码 (模拟 && 二进制)的更多相关文章
- UVA 213 信息解码(二进制&位运算)
题意: 出自刘汝佳算法竞赛入门经典第四章. 考虑下面的01串序列: 0, 00, 01, 10, 000, 001, 010, 011, 100, 101, 110, 0000, 0001, …, 1 ...
- 【每日一题】 UVA - 213 Message Decoding 模拟解码+读入函数+阅读题
题意:阅读理解难度一道比一道难orz.手摸了好久样例 题解: 读入:大循环用getline读入header顺便处理一下, 里面再写两重循环,外层一次读三个串,内层一次读num个串. 之后就查表,线性 ...
- 算法习题---4.4信息解码(UVa213)
一:题目 消息编码方案要求在两个部分中发送一个被编码的消息.第一部分:称为头,包含消息的字符.第二部分包含一个模式 表示信息.你必须写一个程序,可以解码这个消息. (一)题目详细 你的程序的编码方案的 ...
- 遗传算法,实数编码的交叉操作之SBX(模拟二进制交叉)
本文主要介绍遗传算法(实数编码)的交叉操作中的SBX,模拟二进制交叉. 首先,给出个人用python2.7实现的代码,具体模块已上传到: https://github.com/guojun007/sb ...
- 把vux中的@font-face为base64格式的字体信息解码成可用的字体文件
在最近移动端项目中用到了vux,感觉用着还习惯,当把vux使用到PC端的时候出现了IE浏览器出现,这样的错误信息: CSS3114: @font-face 未能完成 OpenType 嵌入权限检查.权 ...
- 标准遗传算法(实数编码 python实现)模拟二进制交叉SBX 多项式变异
代码地址: https://github.com/guojun007/real_sga 本部分是采用实数编码的标准遗传算法,整体流程与上一篇二进制编码的基本一致, 主要区别在于本部分的交叉操作为模拟二 ...
- UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举)
UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举) 题意分析 给出n*m的矩形格子,给出k个点,每个格子里面可以放一个点.现在要求格子的最外围一圈的每行每列,至少要放一个 ...
- SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子
一起来学演化计算-SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子 觉得有用的话,欢迎一起讨论相互学习 ...
- UVa 213,World Finals 1991,信息解码
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
随机推荐
- flask url_for的用法
from flask import Flask,url_for app = Flask(__name__) @app.route('/') def hello_world(): print(url_f ...
- spring aop之父子容器
需求;项目对外提供接口,要求每个对外接口都要进行token认证. 解决办法:写一个token认证的工具类,在每个需要认证的接口方法开始的地方,调用工具类中的token认证方法. 问题:因为要满足指定条 ...
- 2019ICPC徐州游记
裂开QAQ 热身赛听隔壁电科的猛男们说赛前别做题,结果我们3个憨憨还是跑到网吧打哈尔滨的重现赛.结果真的炸裂了,队友D被E题卡哭了,我和队友Z被I题搞炸. 回宾馆的路上都害怕明天裂开. 果然想什么坏事 ...
- AppCan适配问题
使用AppCan调试中心时,屏幕适配是个问题,经过多次调试总结出如下经验: 1,使用HD+(1560 x 720):显示错乱 2,使用FHD+ (2340 x 1080):显示错乱 3,HD (128 ...
- 网络架构,七层协议,三次握手四次挥手,socket套接字简单编程
一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...
- python-event事件-模仿红绿灯
import time import threading event =threading.Event() def lighter(): count=0 event.set()#先设置成绿灯 whil ...
- 6-5 如何读写excel文件
>>> import xlrd,xlwt 一.读excel 1.打开一个excel(读模式) >>> book = xlrd.open_workbook(r&quo ...
- pgsql物理复制(pgsql 备库的搭建以及角色互换,提升)
结构图如下: Postgresql早在9.0版本开始支持物理复制,也称为流复制,通过从实例级复制出一个与主库一模一样的备库.流复制同步方式有同步,异步两种,如果主节点和备节点不是很忙,通常异步模式下备 ...
- TS学习
随着vue3.0的即将到来,是时候学习一下TS了 简介:TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类 ...
- 2019-11-29-dotnet-core-使用-CoreRT-将程序编译为-Native-程序
title author date CreateTime categories dotnet core 使用 CoreRT 将程序编译为 Native 程序 lindexi 2019-11-29 08 ...