hdu 5077 NAND(打表)2014 Asia regional 鞍山站 H题
题目链接:点击打开链接
题意:就是一个按位运算的一个函数。问最少经过多少步运算能够得到给定数。
思路:不是我投机取巧想打表。是特么这题仅仅能打表。。
。打表思想用能够得到的数的集合表示状态bfs;最后有一个须要11步的须要打将近1h。除去这一个十分钟就够了。
cpp:
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <map>
using namespace std;
int mark[300];
struct node{
int deep;
vector <int> us;
void init(){
deep=0;
us.push_back(15);
us.push_back(51);
us.push_back(85);
us.push_back(0);
us.push_back(255);
}
bool find(int n){
for(int i=0;i<us.size();i++)
if(us[i]==n) return 1;
return 0;
}
};
int Nand(int a,int b){
return (255^(a&b));
}
queue <node> Q;
map<vector<int>,bool> Map;
//打出所有表版本号的check
bool check(){
int bj=1;
for(int i=0;i<256;i++){
if(mark[i]<0) {
bj=0;
}
}
if(bj)
for(int i=0;i<256;i++){
printf("%d , ",mark[i]);
}
return bj;
}
//留下最后一个数不打的check版本号
bool check(){
int cnt=0;
for(int i=0;i<256;i++){
if(mark[i]<0) {
cnt++;
}
}
if(cnt<2)
for(int i=0;i<256;i++){
printf("%d , ",mark[i]);
}
return (cnt<2);
}
void bfs(){
node tpe;
tpe.init();
Q.push(tpe);
for(int i=0;i<5;i++)
{
mark[tpe.us[i]]=0;
}
while (!check()){
node tp=Q.front();
Q.pop();
for(int i=0;i<tp.us.size();i++){
for(int j=0;j<tp.us.size();j++){
int temp=Nand(tp.us[i],tp.us[j]);
if(mark[temp]<0) mark[temp]=tp.deep+1;
if(!tp.find(temp)){
node he=tp;
he.deep++; he.us.push_back(temp);
sort(he.us.begin(),he.us.end());
if(Map[he.us]==1) continue;
Map[he.us]=1;
Q.push(he);
}
}
}
}
}
int main(){
for(int i=0;i<256;i++) mark[i]=-1;
bfs();
return 0;
}
hdu 5077 NAND(打表)2014 Asia regional 鞍山站 H题的更多相关文章
- hdu 5077 NAND(暴力打表)
题目链接:hdu 5077 NAND 题目大意:Xiaoqiang要写一个编码程序,然后依据x1,x2,x3的值构造出8个字符.如今给定要求生成的8个字符.问 说Xiaoqiang最少要写多少行代码. ...
- (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )
http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others) Memo ...
- (二叉树)Elven Postman -- HDU -- 54444(2015 ACM/ICPC Asia Regional Changchun Online)
http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Time Limit: 1500/1000 MS (Java/Others) ...
- 【线段树】HDU 5493 Queue (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意: N个人,每个人有一个唯一的高度h,还有一个排名r,表示它前面或后面比它高的人的个数 ...
- hdu 4747 Mex (2013 ACM/ICPC Asia Regional Hangzhou Online)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4747 思路: 比赛打得太菜了,不想写....线段树莽一下 实现代码: #include<iost ...
- (字符串处理)Fang Fang -- hdu -- 5455 (2015 ACM/ICPC Asia Regional Shenyang Online)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=5455 Fang Fang Time Limit: 1500/1000 MS (Java/Others) ...
- (线段树 区间查询)The Water Problem -- hdu -- 5443 (2015 ACM/ICPC Asia Regional Changchun Online)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Time Limit: 1500/1000 MS (Java/ ...
- HDU - 5493 Queue 2015 ACM/ICPC Asia Regional Hefei Online(线段树)
按身高排序,每个人前面最高的人数有上限,如果超出上限说明impossible, 每次考虑最小的人,把他放在在当前的从左往右第k+1个空位 因为要求字典序最小,所以每次k和(上限-k)取min值. 没有 ...
- HDU 5875 Function 2016 ACM/ICPC Asia Regional Dalian Online
N个数(N<=100000),M个询问,每次询问L,R,求F(L,R). F(L,R)=F(L,R-1)%A[R] , L<R 这道题数据比较鶸 可以直接用递减爆 正确做法应该是倍增 用倍 ...
随机推荐
- C++异常与析构函数及构造函数
析构函数不要抛出异常. 构造函数可以抛出异常,但是要谨慎. 原因下面这篇文章讲的不错,转载如下: http://jarfield.iteye.com/blog/811703 写Java代码的时候,遇到 ...
- HDU 4344
其实不过是大整数分解... 注意两点:注意L 不能==N 但是,N却可以是素数...囧 #include <iostream> #include <cstdio> #inclu ...
- Hdu oj 1017 A Mathematical Curiosity
题目:pid=1017">点击打开链接 #include<stdio.h> int main() { int t; scanf("%d",&t) ...
- muduo总结
总结说的有的过大,算是对自己学习的一个总结.兴许会不断补充. 模型总结 muduo是基于非堵塞的IO和事件驱动的网络库. muduo的总体结构时one loop per thread+threadpo ...
- 字节与字符_字节流与字符流_ASCII与Unicode_GB2312_GBK_GB18030_BIG-5
字节(Byte):通常将可表示经常使用英文字符8位二进制称为一字节. 一个英文字母(不分大写和小写)占一个字节的空间,一个中文汉字占两个字节的空间. 符号:英文标点2占一个字节,中文标点占两个字节. ...
- Spyder调试快捷键
Ctrl+1: 注释.取消注释 Ctrl+4/5: 块注释 / 取消块注释 F12: 断点 / 取消断点 F5: 运行 Ctrl+F5: 启动调试 Ctrl+F10: 单步调试,跳过函数内部实现 ...
- 37.Qt网络与通信
1 获取本机网络与通信 在网络应用中,经常需要获得本机的主机名.IP地址和硬件地址等网络信息.运用QHostInfo,QNetWorkInterface,QNetworkAddressEntry可获得 ...
- CZLayer的阴影
CALayer有一个shadow属性 意思是阴影 shadowcolor //颜色 shadowoffset //偏移 shadowOpacity //透明度 layer有一个方法 mas ...
- BZOJ 4358 坑 莫队+线段树 死T
这是一个坑 竟然卡nsqrt(n)logn T死 等更 //By SiriusRen #include <cmath> #include <cstdio> #include & ...
- js前台编码,asp.net后台解码 防止前台传值到后台为乱码
js编码: encodeURI() 后台解码:HttpUtility.UrlDecode()