hdu 4712 Hamming Distance bfs
我的做法,多次宽搜,因为后面的搜索扩展的节点会比较少,所以复杂度还是不需要太悲观的,然后加上一开始对答案的估计,用估计值来剪枝,就可以ac了。
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- char a[11];
- int key[111111];
- int hash[1111111];
- int que[2111111];
- int front,end;
- int ans;
- void bfs()
- {
- while(front<=end)
- {
- int now=que[front++];
- if(hash[now]>=ans) continue;
- for(int i=0;i<=19;i++)
- {
- int to=(now^(1<<i));
- if(hash[to]>hash[now]+1)
- {
- hash[to]=hash[now]+1;
- que[++end]=to;
- }
- }
- }
- }
- int cal(int t,int s)
- {
- int sum=0;
- for(int i=0;i<=19;i++)
- {
- int tmp=key[t]&(1<<i);
- int txt=key[s]&(1<<i);
- if(tmp^txt)
- sum++;
- }
- return sum;
- }
- int main()
- {
- // freopen("in.txt","r",stdin);
- int T;
- scanf("%d",&T);
- while(T--)
- {
- memset(hash,1,sizeof(hash));
- ans=33;
- int n;
- scanf("%d",&n);
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=5;j++)
- {
- scanf("%c",&a[j]);
- if(a[j]==' '||a[j]=='\n')
- j--;
- }
- int txt=1,sum=0;
- for(int j=1;j<=5;j++)
- {
- if(a[j]>='0'&&a[j]<='9')
- sum+=(a[j]-'0')*txt;
- else
- sum+=(a[j]-'A'+10)*txt;
- txt*=16;
- }
- key[i]=sum;
- }
- sort(key+1,key+1+n);
- for(int i=1;i<n;i++)
- ans=min(ans,cal(i,i+1));
- for(int i=1;i<=n;i++)
- {
- ans=min(ans,hash[key[i]]);
- front=1,end=0;
- que[++end]=key[i];
- hash[key[i]]=0;
- bfs();
- }
- cout<<ans<<endl;
- }
- return 0;
- }
hdu 4712 Hamming Distance bfs的更多相关文章
- hdu 4712 Hamming Distance(随机函数暴力)
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- hdu 4712 Hamming Distance 随机
Hamming Distance Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- hdu 4712 Hamming Distance ( 随机算法混过了 )
Hamming Distance Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- HDU 4712 Hamming Distance(随机算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4712 题目大意:任意两个数按位异或后二进制中含1的个数被称为海明距离,给定n个数,求出任意其中两个最小 ...
- HDU 4712 Hamming Distance(随机算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4712 解题报告:输入n个数,用十六进制的方式输入的,任意选择其中的两个数进行异或,求异或后的数用二进制 ...
- hdu 4712 Hamming Distance(随机数法)
d.汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量, 我们以d(x,y)表示两个字x,y之间的汉明距离.对两个字符串进行异或运算,并统计结果为 ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- HDU 472 Hamming Distance (随机数)
Hamming Distance Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) To ...
- HDU 4217 Hamming Distance 随机化水过去
Hamming Distance Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
随机推荐
- uva 10271 Chopsticks(dp)
题目连接:10271 - Chopsticks 题目大意:给出m和n, 然后给出n根筷子从小到大给出, 现在要从这n根筷子中选出m + 8组筷子, 每组筷子包括三根, 现在要求所有m + 8组每组筷子 ...
- windows下各个浏览器用html5进行h.264大视频播放的性能对比说明
最近在调查windows下哪种浏览器进行大视频播放时候稳定性比较高. 举h.264的4g的视频为例. 选用的浏览器有ie10,firefox,chrome.(因为opera不支持h.264所以没有考虑 ...
- myeclipse自动生成注释
myeclipse自动生成注释 在使用Eclipse编写Java代码时,自动生成的注释信息都是按照预先设置好的格式生成的,例如其中author的属性值. 我们可以在Eclipse中进行设置自己希望显示 ...
- 再造 “手机QQ” 侧滑菜单(三)——视图联动
代码示例:https://github.com/johnlui/SwiftSideslipLikeQQ 本 文中,我们将一起使用 UINavigationController 来管理主视图,并实现点击 ...
- muduo 与 libevent2 吞吐量对照
libevent 是一款很好用的 C 语言网络库,它也採用 Reactor 模型,正好能够与 muduo 做一对照. 本文用 ping pong 測试来对照 muduo 和 libevent2 的吞吐 ...
- linux 单网卡绑定两个ip
一.ubuntu系统: #vi /etc/network/interfaces OR $ sudo vi /etc/network/interfaces Modify as follows: au ...
- CentOS 如何安装git server + Gitolite 【配置不成功需要再测试2015-8-20】
安装git 关于安装git 可以参考 http://gitolite.com/gitolite/install.html 里面有官方的介绍 1. Git 的工作需要调用 curl,zlib,open ...
- Qt 学习之路 2(75):线程总结
前面我们已经详细介绍过有关线程的一些值得注意的事项.现在我们开始对线程做一些总结. 有关线程,你可以做的是: 在QThread子类添加信号.这是绝对安全的,并且也是正确的(前面我们已经详细介绍过,发送 ...
- poj 1155 TELE (树形背包dp)
本文出自 http://blog.csdn.net/shuangde800 题目链接: poj-1155 题意 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构, ...
- Android事件模型之interceptTouchEvnet ,onTouchEvent关系正解
首先,看Android的官方文档正解 onInterceptTouchEvent()与onTouchEvent()的机制: 1. down事件首先会传递到onInterceptTouchEvent() ...