类似于DP一样做,但这题有个大坑,自己看DIS吧。。。。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <climits>
#include <string.h>
#define LL __int64
using namespace std; const int N=1<<16;
const int inf=1<<30;
int dp[N];
char str[25];
int ans[25];
int num[125],b,n,goal; int judge(int f,int s){
int tmp;int c=0;
for(int k=0;k<b;k++){
tmp=1<<k;
if((f&tmp)==(s&tmp))
c++;
}
return c;
} int main(){
while(scanf("%d%d",&b,&n)!=EOF){
scanf("%s",str+1);
goal=0;
int len=strlen(str+1);
for(int i=len;i>=1;i--){
int t=str[i]-'0';
goal+=t*(1<<(b-i));
}
int tmp=(1<<b)-1;;
for(int k=1;k<=n;k++){
scanf("%s",str+1);
len=strlen(str+1);
num[k]=0;
for(int i=len;i>=1;i--){
int t=str[i]-'0';
num[k]+=t*(1<<(b-i));
}
}
bool flag=false;
for(int k=1;k<=n;k++){
if(num[k]==goal){
len=0;
if(goal==0){
printf("1\n");
int pos=goal;
while(b--){
ans[++len]=pos%2;
pos>>=1;
}
for(int i=len;i>0;i--)
printf("%d",ans[i]);
printf("\n");
flag=true;
break;
}
else if(goal!=0){
printf("2\n");
int pos=goal;
while(b--){
ans[++len]=pos%2;
pos>>=1;
}
for(int i=len;i>0;i--)
printf("%d",ans[i]);
printf("\n");
flag=true;
break;
}
}
}
if(flag) continue;
for(int k=0;k<=tmp;k++){
dp[k]=inf;
}
for(int i=1;i<=n;i++)
dp[num[i]]=0;
for(int i=1;i<=n;i++){
for(int k=0;k<=tmp;k++){
dp[k]=min(dp[k],dp[k^num[i]]+1);
}
}
int pos=-1,c=-1,t;
for(int k=0;k<=tmp;k++){
if(dp[k]!=inf){
t=judge(k,goal);
if(t>c){
pos=k;
c=t;
}
else if(t==c){
if(dp[pos]>dp[k])
pos=k;
}
}
}
printf("%d\n",dp[pos]);
len=0;
while(b--){
ans[++len]=pos%2;
pos>>=1;
}
for(int i=len;i>0;i--)
printf("%d",ans[i]);
printf("\n");
}
return 0;
}

  

最新文章

  1. 关于C转汇编(转自网上)
  2. html初始化页面和a标签无下划线
  3. 【Java每日一题】20161125
  4. js-二维数组和多维数组
  5. C# 通用验证类 支持 WPF,MVC,Winform
  6. poj3620
  7. Day5模块-random模块
  8. if else 和switch case以及continue,break的区别
  9. Swift的基础之UILabel控件
  10. Ubuntu16.04 换阿里源
  11. [Linux] Linux的环境变量
  12. day 4 - 2 数据类型练习
  13. php 实现双向链表
  14. Go语言标准库之JSON编解码
  15. linux 系统管理 实战技巧
  16. JVM GC总结
  17. Deep Reinforcement Learning from Self-Play in Imperfect-Information Games
  18. 字符型设备驱动程序-first-printf以及点亮LED灯(四)
  19. [APIO2018] New Home
  20. fzoj 2113数位dp

热门文章

  1. java学习笔记(二)图形用户接口
  2. c++11 实现半同步半异步线程池
  3. luogu2261 [CQOI2007] 余数之和
  4. dns tunnel 使用 nishang 下载TXT里的cmd(TXT里)实现CC command+ ceye实现数据外发
  5. 4.Projects and Scenes介绍
  6. css中常用的七种三栏布局技巧总结
  7. 让break跳出外层循环的方法
  8. 3D旋转立方体案例
  9. c++常用功能封装
  10. 继承&amp;封装