http://172.20.6.3/Problem_Show.asp?id=1383

 找能到达某个状态的最小操作数,然后把所有状态扫一遍即可,要额外判定一下起始就有的状态(如果起始里没有0那么这些状态应该起始是2(异或同一个数)),写博客的时候才意识到我的这个代码是有问题的,最开始应该把所有的状态都判定一边啊…不想改了就这样好了,OJ数据真水
代码
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
const int maxn=<<;
int n,m;
char ch[][]={};
int a[]={};
int f[maxn]={};
int wtf1=,wtf2=;
queue<int>q;
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
scanf("%s",&ch[i]);
int z=;
for(int j=n-;j>=;j--){
a[i]+=z*(int)(ch[i][j]-'');
z*=;
}
if(i!=&&a[i]==a[]){
m--;i--;wtf1=;wtf2=a[i];
}
}
memset(f,,sizeof(f));int ww=f[];
for(int i=;i<=m;i++)f[a[i]]=,q.push(a[i]);
while(!q.empty()){
int x=q.front();q.pop();
for(int i=;i<=m;i++){
int y=x^a[i];
if(f[y]>f[x]+){
f[y]=f[x]+;
q.push(x^a[i]);
}
}
}int ma=(<<n)-,x1,t,x;
int id=ma,ans=ma;
for(int i=;i<=ma;i++){
if(f[i]==ww)continue;
x1=i^a[],t=;
while(x1){
x1-=(x1&(-x1));
t++;
}
if(t<ans||(t==ans&&f[i]<id)){
ans=t;x=i;id=f[i];
}
}
if(wtf1&&(id>||ans>)){id=;x=a[];}
printf("%d\n",id);
int z;
for(int i=n-;i>=;i--){
z=<<i;
printf("%d",x/z);
x=x%z;
}
return ;
}

JZYZOJ1383 [usaco2003feb]impster 位运算 最短路的更多相关文章

  1. UVA - 658 It's not a Bug, it's a Feature! (隐式图的最短路,位运算)

    隐式的图搜索,存不下边,所以只有枚举转移就行了,因为bug的存在状态可以用二进制表示,转移的时候判断合法可以用位运算优化, 二进制pre[i][0]表示可以出现的bug,那么u&pre[i][ ...

  2. It&#39;s not a Bug, It&#39;s a Feature! (poj 1482 最短路SPFA+隐式图+位运算)

    Language: Default It's not a Bug, It's a Feature! Time Limit: 5000MS   Memory Limit: 30000K Total Su ...

  3. php位运算的应用(转)

    在实际应用中可以做用户权限的应用 我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到”位运行符”操作,& 位与运算符.| 位或运行符.参与运算的如果是10进制数,则会被转换至2进制数参 ...

  4. C语言位运算

    C语言位运算详解    位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,shor ...

  5. java中&和&&的区别 位运算

    1.1. 逻辑与的运算符功能 1.1.1. 测试&& public static void main(String[] args) { int x=5; if (x==6 && ...

  6. C语言中的位运算和逻辑运算

    这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非( ...

  7. 软件补丁问题(SPFA+位运算)

    洛谷P2761 1.考虑到所有的错误只有“修复,未修复”两种情况,所以可以用0,1标记压缩状态,采用位运算减少时空浪费. 又考虑到有修复时间的关系,将时间抽象成边,将状态抽象为点(设修复为0,未修复为 ...

  8. Java 基本数据类型 && 位运算

    1. Java基本数据类型 1.1 数据类型示意图 类型 字节数 范围 byte 1 -128~127 short 2 -32768~32767 int 4 -231~231-1 long 8 -26 ...

  9. POJ--2570--Fiber Network【floyd+位运算】

    题意:一些公司决定搭建一些光纤网络.单向的,假设从第一点到第二点,有ab两个公司能够搭建,第二点到第三点有ac两个公司能够搭建,第一点到第三点有d公司能够搭建,则第一点到第三点有a.d两个公司能够搭建 ...

随机推荐

  1. python学习笔记(九)之字符串

    定义字符串 >>> mystring = 'Hello Python' >>> name = str('Mountain') >>> mystri ...

  2. [bzoj3993][SDOI2015]星际战争-二分+最大流

    Brief Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai. ...

  3. VMware 12安装虚拟机Mac OS X 10.10不能上网问题

    1:从本机中选择打开连接网络,选择本地连接.如果是无线网可以选择无线网. 1:  2: 控制面板--->网络和共享中心 2:选择属性,点击共享按钮. 3:将internet连接共享下面选项都选中 ...

  4. base--AuditObject

    //参考base-4.0.2.jarpublic class AuditObject extends HashMap<String, Object> implements TimeRefe ...

  5. perl6中的q/qq/qx/qqx

    q不内插 qq内插 qx不内插 qqx内插

  6. 安全测试===黑客攻击常用cmd命令大全

    黑客常用命令大全net user heibai lovechina /add 加一个heibai的用户密码为lovechina net localgroup Administrators heibai ...

  7. 64_k1

    KoboDeluxe-0.5.1-22.fc26.x86_64.rpm 13-Feb-2017 22:11 1626454 k3b-17.04.1-1.fc26.x86_64.rpm 25-May-2 ...

  8. Oracle 合并 merger into

    merge into copy_emp1 c  using employees e  on (c.employee_id=e.employee_id)when matched then  update ...

  9. linux的基本的命令行操作

    linux的基本的命令行操作 第一步前登陆你的服务器 //创建文件夹的方法 mkdir 文件名 //进入指定文件夹 cd 文件名 //查看文件夹下的内容 ls or ll // 查看当前的路径 pwd ...

  10. FineReport——自定义登录页

    统一的接口: http://localhost:8075/WebReport/ReportServer?op=fs_load&cmd=sso&fr_username=XX&fr ...