Este es un seguimiento de las matrices de recuento que hacen conjuntos únicos . La diferencia significativa es la definición de unicidad.
Considere una variedad A
de longitud n
. La matriz contiene solo enteros positivos. Por ejemplo A = (1,1,2,2)
. Definamos f(A)
como el conjunto de sumas de todos los subconjuntos contiguos no vacíos de A
. En este caso f(A) = {1,2,3,4,5,6}
. Los pasos para producir f(A)
son los siguientes:
Las submatrices de A
son (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)
. Sus sumas respectivas son 1,1,2,2,2,3,4,4,5,6
. El conjunto que obtienes de esta lista es por lo tanto {1,2,3,4,5,6}
.
Llamamos a una matriz A
única si no hay otra matriz B
de la misma longitud que f(A) = f(B)
, excepto por la matriz A
invertida. Como ejemplo, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}
pero no hay otra matriz de longitud 3
que produzca el mismo conjunto de sumas.
Tarea
La tarea, para un dado n
y s
es contar el número de matrices únicas de esa longitud. Puede suponer que s
está entre 1
y 9
. Solo necesita contar matrices donde los elementos son un número entero dado s
o s+1
. Por ejemplo, si s=1
las matrices que está contando solo contienen 1
y 2
. Sin embargo, la definición de unicidad es con respecto a cualquier otra matriz de la misma longitud. Como ejemplo concreto no[1, 2, 2, 2]
es único, ya que da el mismo conjunto de sumas que .[1, 1, 2, 3]
Debe contar el reverso de una matriz, así como la matriz misma (siempre que la matriz no sea un palíndromo, por supuesto).
Ejemplos
s = 1
, las respuestas para n = 2,3,4,5,6,7,8,9 son:
4, 3, 3, 4, 4, 5, 5, 6
Para s = 1
, las matrices únicas de longitud 4 son
(1, 1, 1, 1)
(2, 1, 1, 2)
(2, 2, 2, 2)
s = 2
, las respuestas para n = 2,3,4,5,6,7,8,9 son:
4, 8, 16, 32, 46, 69, 121, 177
Un ejemplo de una matriz que no es única con s = 2
es:
(3, 2, 2, 3, 3, 3).
Tiene el mismo conjunto de sumas que ambas: (3, 2, 2, 2, 4, 3)
y (3, 2, 2, 4, 2, 3)
.
s = 8
, las respuestas para n = 2,3,4,5,6,7,8,9 son:
4, 8, 16, 32, 64, 120, 244, 472
Puntuación
Para un determinado n
, su código debe generar la respuesta para todos los valores de s
from 1
a 9
. Su puntaje es el valor más alto n
para el cual esto se completa en un minuto.
Pruebas
Necesitaré ejecutar su código en mi máquina ubuntu, así que incluya las instrucciones más detalladas posibles sobre cómo compilar y ejecutar su código.
Tabla de clasificación
- n = 13 por Christian Sievers en Haskell (42 segundos)
s
? ¿Que representa?