Resumen Ejecutivo
Teniendo en cuenta la entrada k, encontrar una partición de números enteros 1a nen ksubconjuntos libre de suma para el más grande nque pueda dentro de los 10 minutos.
Antecedentes: números de Schur
Un conjunto no Atiene suma si su auto suma A + A = { x + y | x, y in A}no tiene elementos en común.
Por cada número entero positivo khay un número entero más grande de S(k)tal manera que el conjunto {1, 2, ..., S(k)}se puede dividir en ksubconjuntos sin suma. Este número se denomina número k th Schur (OEIS A045652 ).
Por ejemplo, S(2) = 4. Podemos particionar {1, 2, 3, 4}como {1, 4}, {2, 3}, y esa es la partición única en dos subconjuntos sin suma, pero ahora no podemos agregar 5a ninguna de las partes.
Desafío
Escriba un programa determinista que haga lo siguiente:
- Tome un entero positivo
kcomo entrada - Escribir la marca de tiempo actual de Unix en stdout
- Emite una secuencia de particiones de
1anenksubconjuntos sin suma para aumentarn, siguiendo cada secuencia con la marca de tiempo Unix actual.
El ganador será el programa que imprime una partición para el más grande nen 10 minutos en mi computadora cuando se le da entrada 5. Los empates se romperán por el tiempo más rápido para encontrar una partición para el mayor npromedio de tres ejecuciones: es por eso que la salida debe incluir marcas de tiempo.
Detalles importantes:
- Tengo Ubuntu Precise, por lo que si su idioma no es compatible, no podré calificarlo.
- Tengo una CPU Intel Core2 Quad, por lo que si desea usar subprocesos múltiples, no tiene sentido usar más de 4 subprocesos.
- Si desea que use algún indicador o implementación particular del compilador, documente eso claramente en su respuesta.
- No deberá poner en mayúsculas y minúsculas su código para manejar la entrada
5. - No es necesario que produzca todas las mejoras que encuentre. Por ejemplo, para la entrada
2, solo puede generar la particiónn = 4. Sin embargo, si no muestra nada en los primeros 10 minutos, lo calificaré comon = 0.
n=59, y ordenar por el mayor número de números permitidos menos quenextNdan=64. Ordenar por la longitud de la lista de números no permitidos (que puede tener repeticiones) conduce muy rápidamente a unn=30patrón elegante .