Dada una matriz que contiene elementos [matemática] N [/ matemática] y consultas [matemática] Q [/ matemática], cada consulta contiene 3 enteros [matemática] L [/ matemática], [matemática] R [/ matemática] y [matemática ] K [/ matemáticas]. Para cada uno, informe la suma de cada elemento [math] K ^ {th} [/ math] entre [math] L [/ math] y [math] R [/ math] (a partir de [math] L [/ math] )

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}

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 🙂

Déjame darte algunas pautas.

Fuerza bruta:

Acumulador
Bucle de L a R
Incremento de bucle K

Optimizado: #
Obtenga una fórmula cerrada mirando el patrón y haciendo un poco de matemática.

PD: he resuelto esto en HackerEarth. Alguna variación de canguro.

Editar: # no puede obtener una fórmula cerrada.

More Interesting

¿El aumento del nivel de las competiciones de matemáticas ha resultado en un aumento de las capacidades en las ciencias del mundo real?

¿Por qué la informática teórica es tan seca en los trabajos, a excepción de la academia? Aunque todas las empresas se enfrentan a desafíos, no hay una guerra muy reñida contra problemas difíciles, y las personas tienden a elegir la forma fácil de resolver cada problema.

¿Cuántas matemáticas requiere la Olimpiada Internacional de Informática (IOI)?

En la clasificación de texto, ¿hay alguna manera de evitar los mismos resultados para 'hacer adición' y adición?

¿Por qué 0.8 * 3 devuelve 2.4000000000000004 en lugar de 2.4?

Debe encontrar para un número determinado de pulsaciones de teclas (N) el número máximo de caracteres 'A' que puede generar. Solo puede usar 4 teclas: A, Ctrl + A, Ctrl + C y Ctrl + V. Solo se permiten N pulsaciones de teclas. ¿Puedes escribir este programa?

¿Qué algoritmo debo usar para crear un solucionador de Sudoku?

Si una persona tuviera un nuevo modelo de física fundacional de calidad nacido de la informática, no de las matemáticas, ¿cuál sería la mejor manera de presentarlo?

¿Son los algoritmos y las fórmulas dos cosas diferentes y mutuamente excluyentes? ¿Cuál es o no es la diferencia?

¿Cuál es el concepto de tipos en la teoría de tipos (de una manera simple pero rigurosa)?

¿Cuál es la forma de demostrar que el límite inferior del par más cercano es n log n utilizando Element Uniqueness?

¿Qué significa la informática teórica?

¿Por qué es importante la condición i + j <n en el siguiente código?

Cómo probar la independencia entre variables continuas

Cómo convertir una combinación dada a un solo número