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 这道题数据比较鶸 可以直接用递减爆 正确做法应该是倍增 用倍 ...
随机推荐
- 鸟书shell 学习笔记(二) shell中正則表達式相关
通配符与正則表達式的差别 通配符是bash原生支持的语法,正則表達式是处理字符串的一种表示方式, 正則表達式须要支持的工具支持才干够 语系设置 : export LANG=C grep alias 设 ...
- 【手势交互】6. 微动VID
中国 天津 http://www.sharpnow.com/ 微动VID是天津锋时互动科技有限公司开发的中国Leap Motion. 它能够识别并跟踪用户手部的姿态.包含:指尖和掌心的三维空间位置:手 ...
- pandas深入理解
Pandas是一个Python库,旨在通过“标记”和“关系”数据以完成数据整理工作,库中有两个主要的数据结构Series和DataFrame In [1]: import numpy as np In ...
- 分享:Android系统的经常使用权限整理
1.ACCES_NETWORK_STATE 同意应用程序获取网络状态信息的权限 2.ACCESS_WIFI_STATE 同意应用程序获取Wi-Fi网络状态的权限 3.BAT ...
- angularjs1-3,$apply,$watch
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- HDFS 文件格式——SequenceFile RCFile
 HDFS块内行存储的例子  HDFS块内列存储的例子  HDFS块内RCFile方式存储的例子
- BZOJ 3052 树上带修莫队
思路: 就是把带修莫队移到了树上 块的大小开到(n^2/3)/2 比较好- 这是一个卡OJ好题 //By SiriusRen #include <cmath> #include <c ...
- C++ MAP使用
1. map的构造函数map<int,string> maphai;map<char,int> maphai;map<string,char> mapstring; ...
- stackoverflow 加载特慢解决方案,配置 hosts 屏蔽速度慢的第三方 API
127.0.0.1 ajax.googleapis.com www.googletagservices.com www.gravatar.com 127.0.0.1 securepubads.g.do ...
- PHP 导出excel 数据量大时
public function ceshiexcel1(){ set_time_limit(0); $filename = '病毒日志'; header('Content-Type: applicat ...