Esta es una pregunta del desafío de contratación de HackerEarth of ThePorter.
El rango de q es 1 <= q <= 10 ^ 5. Pero lo más importante es que el rango de k es 1 <= k <= 10. Esta pregunta puede resolverse usando dp simple y fuerza bruta. como k solo tiene un rango de 10, podemos precalcular la matriz para todos los k posibles que sean 10.
Cree una matriz de suma acumulativa dp para cada k donde
dp [k] [i] = (ik> = 0? dp [k] [ik] + arr [i]: arr [i])
donde k es 1: 10 y yo es 0: n-1
Una vez que creamos esa matriz, encontrar la respuesta se puede hacer en O (1).
lee lr y k.
r = (((rl) / k) * k) + l para hacer (r – l) un múltiplo de k
ans = dp [k] [r] – (lk> = 0? dp [k] [lk]: 0)
Ejemplo:
supongamos que la matriz a [] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} de tamaño 15
dp [1] [] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
dp [2] [] = {1,1,2,2,3,3,4,4,5,5,6,6,7,7,8}
dp [3] [] = {1,1,1,2,2,2,3,3,3,4,4,4,5,5,5}
.
.
.
dp [9] [] = {1,1,1,1,1,1,1,1,1,2,2,2,2,2,2}
dp [10] [] = {1,1,1,1,1,1,1,1,1,1,2,2,2,2,2}
- ¿Qué temas matemáticos recomiendas en informática?
- Apelo en matemáticas pero quiero obtener un título de CS porque me encanta la programación. ¿Qué tengo que hacer? ¿Hay alguna alternativa?
- ¿Cuál es el significado del teorema de Rice en la teoría de la complejidad computacional?
- ¿Se puede programar una computadora para probar problemas matemáticos complejos no resueltos?
- ¿Cuáles son algunas aplicaciones comunes de la topología algebraica en informática?
Ahora las consultas:
para l = 1, r = 6, k = 1
r permanecerá 6 como ((6-1) / k) * k + l será 6
ans = dp [1] [6] – dp [1] [0] = 7 – 1 = 6
para l = 2, r = 13, k = 9
r = ((13-2) / 9) * 9 + l = 11
ans = dp [9] [11] – 0 (como 2-9 es menor que 0) = 2 – 0 = 2
si tiene alguna duda, comente la consulta, haré todo lo posible para explicarle 🙂