洛谷P1461 海明码 Hamming Codes
P1461 海明码 Hamming Codes
- 98通过
- 120提交
- 题目提供者该用户不存在
- 标签USACO
- 难度普及/提高-
提交 讨论 题解
最新讨论
- 暂时没有讨论
题目描述
给出 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进制数,它的值要最小。
输入输出样例
输入样例#1:
16 7 3
输出样例#1:
0 7 25 30 42 45 51 52 75 76
82 85 97 102 120 127
说明
必须与其他所有的数相比,Hamming距离都符合要求,这个数才正确 什么意思啊??? 答:如样例输出,0和7,0和25,0和……比较都符合海明码,同样7和25,7和30,7和……比较也符合要求,以此类推。 就这样了。 题中至少有D个单位,意思就是大于等于D个单位的都可以。
USACO 2.1
翻译来自NOCOW
分析:这个题目有点奇怪,告诉的B其实没多大用,因为没有B位可以通过添加0来补,也就是告诉了你一个范围,那么好办,要求字典序最小,我先把8位二进制数的最大数算出来,然后一一添加数进去看能不能满足要求,然后输出前n个即可.
想到二进制可以用二进制运算,^可以快速算出两个二进制数不同的位数.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n, b, d, ans[], num = ; bool check(int x, int N, int tempd)
{
for (int i = ; i <= N; i++)
{
int temp = x ^ ans[i],cnt = ;
while (temp)
{
if (temp % == )
cnt++;
temp /= ;
}
if (cnt < tempd)
return false;
}
return true;
} int main()
{
scanf("%d%d%d", &n, &b, &d);
ans[] = ;
for (int i = ; i <= ; i++)
if (check(i, num, d))
ans[++num] = i;
for (int i = ; i <= n; i++)
{
printf("%d", ans[i]);
if (i % == || i == n)
printf("\n");
else
if (i < n)
printf(" ");
}
while (); return ;
}
洛谷P1461 海明码 Hamming Codes的更多相关文章
- 洛谷 P1461 海明码 Hamming Codes
P1461 海明码 Hamming Codes 题目描述 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B &l ...
- P1461 海明码 Hamming Codes
题目描述 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个单位 ...
- 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 个 ...
- 【洛谷P1352】没有上司的舞会
[洛谷P1352]没有上司的舞会 x舷售 锚」翅θ 但是 拙臃 蓄ⅶ榔 暄条熨卫 翘ヴ馇 表现无愧于雪月工作室的核心管理 爸惚扎掬 颇瓶 芟缆肝 貌痉了 洵┭笫装 嗝◇裴腋 褓劂埭 ...
- [POI 2008&洛谷P3467]PLA-Postering 题解(单调栈)
[POI 2008&洛谷P3467]PLA-Postering Description Byteburg市东边的建筑都是以旧结构形式建造的:建筑互相紧挨着,之间没有空间.它们共同形成了一条长长 ...
- 洛谷 P1510 精卫填海
洛谷 P1510 精卫填海 题目描述 [版权说明] 本题为改编题. [问题描述] 发鸠之山,其上多柘木.有鸟焉,其状如乌,文首,白喙,赤足,名曰精卫,其名自詨.是炎帝之少女,名曰女娃.女娃游于东海,溺 ...
- 洛谷 P2025 脑力大人之监听电话
P2025 脑力大人之监听电话 题目背景 画外音: (声明:不要管前面那个,纯属意外,现已经重新编题,绝对原创) 上次海选,我们选出了参赛者中的20%参加本次比赛,现在我们将进行第二轮的筛选,这次的比 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
随机推荐
- python 深入理解 赋值、引用、拷贝、作用域
在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域, 这点和大多数 OO 语言类似吧,比如 C++.java 等 ~ 1.先来看个 ...
- 事件日志ID 2511:服务器服务无法重新创建 <sharename> 共享关系,因为 <address> 目录已不再存在
服务器服务无法重新创建 QQMusicDownload 共享关系,因为 D:\QQMusic\QQMusicDownload 目录已不再存在.请运行 "net share QQMusicDo ...
- TSP(旅行者问题)——动态规划详解(转)
1.问题定义 TSP问题(旅行商问题)是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次然后回到出发城市,并要求所走的路程最短. 假设现在有四个城市,0,1,2,3,他们之间的代价如图一,可以存成 ...
- JavaScript中回调函数的使用
在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数. ...
- C产品狗
作者:郭琦链接:https://www.zhihu.com/question/29342383/answer/110823046来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- android listView Exception
- ::-/com.tongyan.tutelage W/System.err﹕ java.text.ParseException: Unparseable date: ) - ::-/com.ton ...
- DBA_Oracle Database 11g 面向 DBA 和开发人员的重要特性
2015-01-23 Created By BaoXinjian
- GL_GL系列 - 总账系统基础(概念)
2014-07-07 Created By BaoXinjian
- 第一个Flask Web
https://github.com/ethan-funny/head-first-flask iOS多线程技术方案 http://www.cnblogs.com/Erma-king/p/593427 ...
- 转-Fragment+FragmentTabHost组件(实现新浪微博底部菜单)
http://www.cnblogs.com/lichenwei/p/3985121.html 记得之前写过2篇关于底部菜单的实现,由于使用的是过时的TabHost类,虽然一样可以实现我们想要的效果, ...