Existem n caixas, numeradas de 1-n . Cada caixa está bloqueada, de modo que possa ser aberta por apenas um tipo de chave correspondente (também numerado de 1-n ). Essas chaves estão espalhadas aleatoriamente nas caixas (uma caixa pode ter qualquer número de chaves, uma chave pode ter qualquer número de duplicatas) e, em seguida, todas as caixas são fechadas. Um tesouro (com o número 0 ) também foi trancado em muitas das caixas.
Você contratou um serralheiro para recuperar todo o tesouro. Ele cobra por cada caixa que ele abre. Não há nenhum custo para abrir uma caixa para a qual a chave já está disponível.
Entrada é o conteúdo de cada caixa. Você pode decidir o formato da entrada.
Produza o custo mínimo necessário para obter os tesouros.
Notas
- Seu algoritmo pode levar um longo tempo, mas isso é irrelevante.
- O menor código vence.
- Não há necessidade de se preocupar com entrada inválida.
Dados de amostra
Aqui a linha i representa as chaves presentes na caixa i .
Entrada
2 0
3
4 0
5 6 0
6
0
Resultado
1
Entrada
2 0
3 0
4 0
6
5 0
Resultado
3
Entrada
2 4 0
3 0
1 0
6
5 0
Resultado
2
Entrada
1
3 4
2 6
5
Resultado
0
fonte
[[1] [3 4] [] [] [2 6] [5]]
ou talvez{{1},{3,4},{},{},{2,6},{5}}
. Dessa forma, a maioria dos idiomas pode reduzir a leitura da entrada para algo tão trivial quantoi=eval(read())
e se concentrar na parte divertida do desafio.Respostas:
CJam,
59525049454342 bytesObrigado a @ MartinBüttner por jogar fora 3 bytes e abrir caminho para mais 4!
Experimente on-line no intérprete CJam .
Como funciona
fonte
array long &
obras, para que possa remover aa
partir0a&
. Infelizmente, isso torna um pouco mais difícil pegá-lo.0a&
por0&
, também tenho que substituir0+
por0aa+
, pois0 0&
é falso.CJam (53 bytes)
Isso é muito lento para o intérprete online.
Dissecação
fonte
java.lang.OutOfMemoryError: Java heap space
com o seu programa.[ [4,0], [1,3,4], [0], [6,0], [3,0], [5]]
claro com o estilo de entrada como mostrado no post original.Haskell, 173 bytes
l
é quem você quer ligar.Não tenho certeza se eu não deveria usar um pseudo- em
Map
vez (em[(Int,[Int])]
vez de[[Int]]
).fonte