P1461 海明码 Hamming Codes
题目描述
给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个单位的“Hamming距离”(1 <= D <= 7)。“Hamming距离”是指对于两个编码,他们二进制表示法中的不同二进制位的数目。看下面的两个编码 0x554 和 0x234(0x554和0x234分别表示两个十六进制数)
0x554 = 0101 0101 0100
0x234 = 0010 0011 0100
不同位 xxx xx
因为有五个位不同,所以“Hamming距离”是 5。
输入输出格式
输入格式:
一行,包括 N, B, D。
输出格式:
N 个编码(用十进制表示),要排序,十个一行。如果有多解,你的程序要输出这样的解:假如把它化为2^B进制数,它的值要最小。
输入输出样例
说明
请解释:“必须与其他所有的数相比,Hamming距离都符合要求,这个数才正确”
答:如样例输出,0和7,0和25,0和……比较都符合海明码,同样7和25,7和30,7和……比较也符合要求,以此类推。 就这样了。 题中至少有D个单位,意思就是大于等于D个单位的都可以。
USACO 2.1
翻译来自NOCOW
题目分析
这一题又是位运算,然后是代码。
// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define RE register int
using namespace std;
int n,b,d,ans[],len=;
main(){ios::sync_with_stdio(),cin.tie();
cin>>n>>b>>d;
for(RE i=,f;len^n;++i){
f=;
for (RE j=len;j;--j)
if(__builtin_popcount(ans[j]^i)<d)
{f=;break;}
if (!f) ans[++len]=i;
}for (RE i=;i<=len;i++){
cout<<ans[i]<<" ";
if(i%==)cout<<"\n";
}
}
代码说明
我们用一个数组来储存这些数,然后从一开始循环。然后判断的时候用了__builtin_popcount函数,这个函数在冬令营也可以用的。
没有然后了。
P1461 海明码 Hamming Codes的更多相关文章
- 洛谷P1461 海明码 Hamming Codes
P1461 海明码 Hamming Codes 98通过 120提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 给出 N,B 和 ...
- 洛谷 P1461 海明码 Hamming Codes
P1461 海明码 Hamming Codes 题目描述 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B &l ...
- USACO 2.1 海明码 Hamming Codes (模拟+位运算+黑科技__builtin_popcount(n))
题目描述 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个单位 ...
- 【USACO 2.1.5】海明码
[题目描述] 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个 ...
- Hamming Codes
1. 海明校验码检错采用的是分组交叉奇偶校验法. 将编码中的数据位分成r个校验组,组内采取奇偶校验,每组一个校验位,可构成r位检错码.r>1 全部检错码为0表示数据正常,不为零时 ...
- 海明码 CRC冗余校验码
海明码(也叫汉明码)具有一位纠错能力.本文以1010110这个二进制数为例解释海明码的编码和校验方法 确定校验码的位数x 设数据有n位,校验码有x位.则校验码一共有2x种取值方式.其中需要一种取值方式 ...
- USACO 2.1 Hamming Codes
Hamming CodesRob Kolstad Given N, B, and D: Find a set of N codewords (1 <= N <= 64), each of ...
- 网络原理数据链路层之差错控制(检错编码和纠错编码)->(奇偶校验码、CRC循环冗余码、海明码)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/104864783 学习课程:<2019王道考研计算机网络> 学习目的 ...
- 【USACO 2.1】Hamming Codes
/* TASK: hamming LANG: C++ URL:http://train.usaco.org/usacoprob2?a=5FomsUyB0cP&S=hamming SOLVE: ...
随机推荐
- python的mysql小代码
我因为懒,就想写个批量insert数据的小代码 这里是代码 # _*_ encoding:utf-8 _*_ import os import MySQLdb import numpy as np d ...
- Echart横坐标时间轴滑动
主要针对于dataZoom的使用,代码如下: option = { title: { text: '未来一周气温变化', subtext: '纯属虚构' }, tooltip: { trigger: ...
- js入门 关于js属性及其数据类型(详解)
1. js的本质就是处理数据.数据来自于后台的数据库. 所以变量就起到一个临时存储数据的作用. ECMAScript制定了js的数据类型. 数据类型有哪些? 1. 字符串 String 2. 数字 ...
- 18.18 Datasheet Note
18.18.1 DM9000A datasheet Ethernet Controller with General Processor Interface Ethernet interface pr ...
- 剑指offer 9.递归和循环 变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 这道题还是编程题? 数学渣渣看到心拔凉拔凉的, 要用到数学归纳法来 ...
- layui:数据表格如何合并单元格
layui.use('table', function () { var table = layui.table; table.render({ elem: '#applyTab' , url: '$ ...
- 拓展abaqus python 模块
abaqus python 本身自带一些模块: 在安装路径:\\SIMULIA\Abaqus\6.14-1\tools\SMApy\python2.7\Lib\site-packages和另外一个2. ...
- 如何快速开发html5跨平台K12/幼儿交互课件、动画课件、交互游戏
flash交互课件能生动表达教学内容,也深受广大教育工作者的喜爱,但是目前flash课件只能在pc电脑平台上进行展示,随着移动网络的发展,越来越多的课件产品需要移殖到各种移动平台(手机,pad,智能电 ...
- MySql 的SQL执行计划查看,判断是否走索引
在select窗口中,执行以下语句: set profiling =1; -- 打开profile分析工具show variables like '%profil%'; -- 查看是否生效show p ...
- linux中开启snmp协议
1.安装软件#yum -y install net-snmp 2.修改配置文件#vim /etc/snmp/snmpd.conf确保snmpd.conf文件中包含以下绿色内容:com2sec notC ...