Los condensadores son conocidos por ser fabricados con altas tolerancias. Esto es aceptable en muchos casos, pero a veces se requiere una capacidad con tolerancias estrictas. Una estrategia común para obtener una capacidad con el valor exacto que necesita es usar dos condensadores medidos cuidadosamente en paralelo, de modo que sus capacidades se sumen a algo en el rango que necesita.
El objetivo en este desafío es, dado un (múltiple) conjunto de capacidades, emparejar los condensadores de modo que la capacidad total de cada par esté en un rango dado. También necesita encontrar el mejor conjunto de emparejamientos, es decir, el conjunto de emparejamientos de modo que se encuentren tantos pares como sea posible.
Restricciones
- La entrada comprende en un formato de elección
- una lista desordenada de capacidades que representan el (multi) conjunto de condensadores que tiene
- Un par de capacidades que representan el límite inferior y superior del rango objetivo (inclusive)
- todas las capacidades en la entrada son enteros positivos menores que 2 30 , la unidad es pF (no es lo que importa).
- Además de la lista de capacidades en la entrada, el conjunto de condensadores que tiene también contiene una cantidad infinita de condensadores con un valor de 0 pF.
- La salida comprende, en un formato de elección, una lista de pares de capacidades de modo que la suma de cada par esté en el rango objetivo especificado. No se especifica ni el orden de los pares ni el orden de las capacidades dentro de un par.
- Ninguna capacidad en la salida puede aparecer con más frecuencia que en el conjunto de condensadores que tiene . En otras palabras: los pares que genera no deben superponerse.
- No habrá salida posible que satisfaga las condiciones 4 y 5 que contenga más pares de capacidades que la salida que produce su programa.
- Su programa terminará en O ( n !) Tiempo donde n es la longitud de la lista que representa el conjunto de condensadores que tiene
- Las lagunas no se abusarán
- El rango objetivo no debe estar vacío
Puntuación
Su puntaje es la longitud de su solución en octetos. Si su solución logra resolver este problema en tiempo polinomial O ( n k ) para algunos k , divida su puntaje entre 10. No sé si esto es realmente posible.
Entrada de muestra
rango 100 a 100, matriz de entrada
100 100 100
, salida válida:0 100 0 100 0 100
rango de 100 a 120, matriz de entrada
20 80 100
, salida válida:0 100 20 80
la salida
20 100
no es válidarango de 90 a 100, matriz de entrada
50 20 40 90 80 30 60 70 40
, salida válida:0 90 20 80 30 70 40 60 40 50
rango 90 a 90, matriz de entrada
20 30 40 40 50 60 70 80 90
, salida válida:0 90 20 70 30 60 40 50
rango de 90 a 110, matriz de entrada
40 60 50
, salida válida:40 60
a <= b <= c <= d
tal que a + d, a + c, b + d
todos estén en el rango pero b + c
no lo estén , pero eso da una contradicción.