简单DP + BFS
牌子之间两两组合出新牌子, 新产生的牌子只需与原始的号码两两组合即可,即,不用考虑两个新牌子组合的情况,因为两个新牌子组合的结果必然等价与一个新牌子和原始牌子组合的结果, 否则会超时。
很自然的就可以用类似BFS里的队列来做, 我由此引发的思考是, 这种新牌子和原始牌子组合到达新point, 和BFS的思想是十分一致的, 我可以把每一个原始牌子看作一个方向, 牌子号码的每一位是一维空间。 比如 01001 这个原始牌子, 对应了一个五维空间, 这个原始牌子的方向就是 ( 0, 1, 0, 0, 1 ) 。 题目就能抽象为, 给出一个B维的空间和可以走的E个方向, 问你能到达离某个点最近的维度。
比如三维空间, 问你到达 (0,0,0) 最低的维度, 如果能到这个点本身那就是0维(0维就是一个点啦 — 我自己想的:),如果能到 (0,0,1) 就是最少1维, 能到 (0,1,1) 是最少二维。 有人问那 (0,0,0) 到 (0,1,1) 不是也能直接连线么, 这样想的话我们要考虑我们只能走给出的原始牌子对应的方向,我们甚至不是顺着xyz轴平移的,而是XOR运算的移动 ^^,所以从 (0,0,0) 到 (0,1,1) 必须顺着两个方向移动, 拉出一个二维空间。 相应的 (0,0,0) 到 (1,1,1) 就要穿越三维空间了。
在B>3的情况下就需要像我一样具有多维的想象力才能理解:)
细节:
变量名写明朗不会死斯基, 把B和E搞混了搞了好久
我输出的时候试图把2进制的每位乘上10来直接放在int里输出,但是没考虑到虽然它实际上是2^16的数,这样转换一下就变成10^16, 不止int的范围了
代码:
[cpp]
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
int inputBin(int B) {
while (getchar() != ‘\n’)
;
int temp = 0;
for (int i = B – 1; i >= 0; i–)
temp += (getchar() – ‘0’) << i;
return temp;
}
int main() {
int B, E;
int map[1 << 16];
int que[1 << 16];
int GOAL;
scanf("%d%d", &B, &E);
GOAL = inputBin(B);
//Initialize
for (int i = 0; i < 1 << B; i++)
map[i] = -1;
for (int i = 0; i < E; i++) {
int temp = inputBin(B);
map[temp] = 0;
que[i] = temp;
}
//BFS
int p0 = 0;
int p1 = E – 1;
while (p0 <= p1) {
if (que[p0] == GOAL)
break;
int temp = que[p0];
for (int i = 0; i < E; i++) {
int created = temp ^ que[i];
if (map[created] != -1)
continue;
//if(created==26)
//printf("**\n");
map[created] = map[temp] + 1;
que[++p1] = created;
}
p0++;
}
//DetailFucker: Strip needs to be "created" as the text described.
int bla = map[0] == 0 ? 1 : 2;
for (int i = 0; i < E; i++)
map[que[i]] = bla;
map[0] = 1;
int result[17];
int resultA[17];
memset(result, 0xff, sizeof(result));
for (int i = 0; i <= p1; i++) {
int diff = 0;
int temp = que[i];
for (int k = 0; k < B; k++)
diff += ((temp >> k) & 1) ^ ((GOAL >> k) & 1);
if (result[diff] == -1 || result[diff] > map[temp] || (result[diff]
== map[temp] && resultA[diff] > temp)) {
result[diff] = map[temp];
resultA[diff] = temp;
}
}
int resultN;
for (resultN = 0;; resultN++) {
if (resultN > B)
exit(1);
if (result[resultN] != -1)
break;
}
printf("%d\n", result[resultN]);
int notYet = resultA[resultN];
for (int i = B – 1; i >= 0; i–)
printf("%d", (notYet >> i) & 1);
printf("\n");
return 0;
}
[/cpp]
References:
Automaten spiele kostenlos neue casino ohne einzahlung
References:
Coin slot https://findinall.com/
References:
Legiano Casino Android http://maps.google.com.bh/
References:
Legiano Casino Alternative maps.google.hu
References:
Legiano Casino Kundenservice http://www.xcnews.ru/go.php?go=link.mym.ge/franciscaberk1
References:
Legiano Casino iPhone krs-sro.ru
References:
Legiano Casinio google.vg
References:
Legiano Casino Cashback http://sv.paltalk.com/
References:
Legiano Casino Bonus http://rufox.ru/
References:
Legiano Casino Promo Code http://images.google.tk
References:
Legiano Casino Live Casino http://shop2.chuukr.cafe24.com/
References:
Legiano Casino Bewertung 52.cholteth.com
References:
Legiano Casino VIP Programm https://pt.chaturbate.com
References:
Legiano Casino Web App http://0845.boo.jp/cgi/mt3/mt4i.cgi?id=24&mode=redirect&no=15&ref_eid=3387&url=http://wiki.desmume.org/api.php?action=https://de.trustpilot.com/review/beyondjewellery.de
References:
Legiano Casino Jackpot http://www.rufox.ru/go.php?url=http://vebiradoworid.school2100.com/bitrix/redirect.php?goto=https://de.trustpilot.com/review/der-wikinger-shop.de
References:
Legiano Casino Live Casino forum-msk.info
References:
Legiano Casino Code hezuo.xcar.com.cn
References:
Legiano Casino Spiele https://id41.ru
References:
Legiano Casino Live Chat http://toolbarqueries.google.ca
References:
Legiano Casino Mobile http://77.pexeburay.com/
References:
Legiano Casino Neukundenbonus https://www.eshko.by
References:
Legiano Casino Test https://fixbios.com/proxy.php?link=http://notable.math.ucdavis.edu/mediawiki-1.21.2/api.php?action=https://de.trustpilot.com/review/der-wikinger-shop.de
References:
Legiano Casino Gutschein https://epsilon.astroempires.com/redirect.aspx?https://de.trustpilot.com/review/edelkranz.de
References:
Legiano Casino legal http://www.google.com.ua/url?q=https://de.trustpilot.com/review/edelkranz.de
References:
Leggiano Casino staroetv.su
References:
Legiano Casino Neukundenbonus https://wellnessbeauty.ru
References:
Legiano Casino Bonus https://www.vs.uni-due.de/trac/mates/search?q=https://short.turtle.onl/leonaparr78548
References:
Legiano Casino Einzahlung http://g.i.ua/?userID=6897361&userID=6897361&_url=https://avyc.io/vanessaswann91
References:
Kingmaker Casino Gutscheincode https://link.mym.ge/francescolunsf
References:
KingMaker 100 bonus einzahlung https://moonlinky.com/fannybusch
References:
Kingmaker Casino Mindesteinzahlung https://cabseh.com/LIHWM
References:
KingMaker Casino Konto eröffnen Bonus https://allbio.link/xktannie2
References:
KingMaker Casino Einzahlung per Trustly ww.visit-x.net
References:
KingMaker Casino 10 Euro einzahlen http://images.google.com.bo/url?sa=t&url=https://de.trustpilot.com/review/beyondjewellery.de
References:
KingMaker giropay https://wiki.kubg.edu.ua/api.php?action=https://de.trustpilot.com/review/beyondjewellery.de&*
References:
KingMaker Casino Einzahlung Spielgeld http://images.google.ge/url?q=https://de.trustpilot.com/review/beyondjewellery.de
References:
Kingmaker Casino Bewertung http://reshalkino.ru/proxy.php?link=https://de.trustpilot.com/review/beyondjewellery.de
References:
KingMaker ersteinzahlungsbonus http://prod-dbpedia.inria.fr/
References:
Legiano Casino Web App http://may2009.archive.ensembl.org/Help/Permalink?url=https://literaryforge.blog/author/eastnepal11/
References:
Legiano Casino Umsatzbedingungen https://skyblock.net/
References:
Legiano Casino Bewertung http://ww.visit-x.net/promo/dyn/dynchat02.php?pfmbanner=1&ver=12&clickurl=https://neolatinswiki.site/wiki/Legiano_casino_login_Deutschland_Spielen_Sie_jetzt_im_casino_Legiano
References:
Legiano Casino Promo Code xgm.guru
References:
Legiano Casino Video Review http://cse.google.pl
References:
Legiano Casino Promo Code https://kalendar.vse.cz/
References:
Legiano Casino Code http://go.redirdomain.ru/
References:
KingMaker Casino 10 Euro Einzahlung board-en.farmerama.com
References:
KingMaker Casino Apple Pay google.ch
References:
Casino Kingmaker images.google.by
References:
KingMaker registrieren cse.google.off.ai
References:
Legiano Casino Kritik https://my.cam7.com/external_link/?url=https://earthwiki.space/wiki/Bonus_Spiele_Zahlungen_in_sterreich