简单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:
Legiano Casino App http://www.swadba.by/iframe?b=https://bridgedesign.site/wiki/Leguano_Barfussschuh_Gr_37_schwarz_30_1110_Wien&u=bit.ly
References:
Leggiano Casino http://cse.google.gr/
References:
Legiano Casino Gutschein http://redirect.camfrog.com/redirect/?url=https://telegra.ph/Legiano-casino-login-konto-erstellen-wie-anmelden-06-07-3
References:
KingMaker Casino Einzahlung mit Trustly http://toolbarqueries.google.co.ke/
References:
Legiano Casino Kontakt http://researchesanswered.akamaized.net/
References:
Legiano Casino Auszahlung Dauer http://www.google.bj/url?q=https://telegra.ph/Legiano-Erfahrungen-2026-Test–Bewertung-06-07
References:
Kingmaker casino kreditkarte einzahlen images.google.by
References:
Legiano Casino Android https://lardi-trans.by
References:
Hitnspin casino freispiele domfialki.ru
References:
Monro Casino Krypto https://connect.jobteaser.com/
References:
Hitnspin casino freispiele https://k-texnik.ru/
References:
Monro Casino Verifizierung http://eng.stove.ru/
References:
Hitnspin casino ähnliche casinos http://www.google.com.gh/
References:
Hitnspin casino slots http://www.xcnews.ru/
References:
Hitnspin casino review https://www.furniture.cx
References:
Hitnspin casino forum chat.chat.ru
References:
Hitnspin casino sicher technoplus.ru
References:
Hitnspin casino no deposit bonus https://www.jobui.com/changecity/?from=https://getshort.in/kitfoust493286
References:
Hitnspin gutscheincode http://backingtrackx.com
References:
Lollybet Casino Freispiele backelektroniksigara.scandwap.xtgem.com
References:
Lollybet Deutschland Login wiki.s-classclinic.com
References:
Lollybet Casino App Download http://toolbarqueries.google.gr/url?q=http://demo.sunflowermachinery.com/noelialatimer6
References:
Lollybet Casino Treueprogramm img.2chan.net
References:
Lollybet Mobile Casino russianrealty.ru
References:
Lollybet Slots via.hypothes.is
References:
Lollybet Kundenservice http://cse.google.je
References:
Lollybet Casino Lizenz clients1.google.kz
References:
Lollybet Casino App http://www.google.bi
References:
Hitnspin casino sicher http://clients1.google.co.ck
References:
Hitnspin casino gewinne http://clients1.google.de
References:
Hitnspin casino willkommensbonus http://clients1.google.com.sv/
References:
Hitnspin casino no deposit bonus http://clients1.google.com.jm
References:
Hitnspin casino paysafecard cse.google.hn
References:
Hitnspin casino registrierung cse.google.lk
References:
Hitnspin erfahrungen http://cse.google.ad/url?sa=t&url=https://www.haphong.edu.vn/profile/ydevzfeskesen4468/profile
References:
Hitnspin casino kundenbewertungen http://maps.google.com.pr/url?sa=t&url=https://platform.joinus4health.eu/forums/users/suiteffect26/
References:
Hitnspin casino bonus code http://clients1.google.bt/
References:
Payid online pokies https://testgitea.educoder.net/declan0673699
References:
Pokies net australia payid withdrawal http://www.bolsadetrabajo.genterprise.com.mx
References:
Online pokies australia payid real money wedioz.com
References:
Payid pokies jobaaty.com
References:
Online pokies with payid australia real money https://shiatube.org/
References:
Best instant payid pokies australia real money jobcop.ca
References:
Payid pokies instant withdrawal git.hanumanit.co.th
References:
Online pokies with payid australia real money https://rentologist.com/profile/luciabeltran9
References:
Lollybet Auszahlung http://images.google.com.tj/url?q=https://lollybet.com.de/
References:
Lollybet Mobile Casino m.kaskus.co.id
References:
Monte casino south africa staffsagye.com
References:
Ojibwa casino https://houseofmercycommunityuk.org/employer/wie-lange-dauert-eine-auszahlung-im-online-casino/
References:
Wind creek casino atmore al https://youthforkenya.com/employer/instant-casino-bewertung-2025-betrug-oder-seri%C3%B6s?