He comenzado la programación competitiva y puedo resolver el codificador superior Div 2 250 y div 2 500 cómodamente y, a veces, div2 1000. Pero me quedo estancado cuando algunas de las soluciones son más de naturaleza matemática y no con respecto a algoritmos o DS.

Es más de naturaleza algorítmica que matemática, al menos según el lenguaje común de programación competitiva.

Así es como resuelve (o al menos, cómo resolví) este problema en particular:

  • Necesitamos encontrar el número total de subcadenas [L..R] (indexación desde 0) que tienen al menos una subcadena de K consonantes consecutivas (llame a [L..R] una subcadena válida)
  • Para una R dada, cuentemos cuántas L existen de modo que [L..R] sea válido
  • Sea [i..j] la última subcadena de K consonantes consecutivas de modo que j <= R. Entonces [L..R] es válido para L = 0,1 … i, dando un total de i + 1 subcadenas válidas
  • Por lo tanto, nuestro problema se reduce a encontrar el comienzo de la última subcadena de K consonantes consecutivas para cada R. Esto se puede hacer mediante programación dinámica estándar.

//The beginning position of the latest substring of K consecutive consonants int latestbegin=-1; //The current length of consecutive consonants int consonants=0; long long answer=0; for(int R=0;R=K) { //Update the latest valid position for L latestbegin=R-K+1; } } answer+=latestbegin+1; } return answer; 

La programación dinámica no se considera demasiado matemática en las competencias de programación al menos. Esa palabra generalmente está reservada para la teoría de números y la geometría avanzada y otras cosas que no se espera que un codificador de nivel IOI sepa. Cualquier libro de algoritmos estándar le dará una introducción decente a la programación dinámica y otras técnicas algorítmicas que necesita para los concursos de programación. Pero tendrá que practicar mucho para resolver la mayoría de los problemas, ya que el DP generalmente no es muy obvio. Quora tiene un tema completo dedicado a ello. ahmed-aly.com tiene una lista de problemas de DP. Buena suerte.

More Interesting

Tengo 18 años y empiezo la universidad como estudiante de tercer año, ¿hay algo que deba saber?

Soy un primer año en BITS Pilani prestado por las tarifas de BITS. ¿Puedo ir a cualquier universidad de Ivy League para obtener una maestría o educación superior, ya que tengo que tomar otro préstamo?

Soy un padre orgulloso de dos gatitos de rescate de 3 años y planeo agregar un cachorro a la familia. ¿Qué raza de caninos se adapta mejor? ¿De hacer no hacer?

Estoy planeando comprar una bicicleta, pero estoy confundido entre Apache RTR 200 4V y KTM Duke 200. ¿Cuál debo comprar?

Estoy considerando entrar en el ‘Negocio de YouTube’. Estoy considerando hacer música electrónica. ¿Hay algo que deba saber?

¿Por qué me han rechazado / enviado a Coventry? Me separé por segunda vez con mi pareja abusiva de 15 años.

Estoy buscando un trabajo, pero registrarme en los portales de empleo no es efectivo. Los detalles compartidos con los spammers y el currículum por correo electrónico a las empresas también son los mismos. ¿Qué debería hacer ahora?

Estoy iniciando una empresa y no tengo dinero. ¿Cómo llevo a las personas a mi sitio y hago que se registren sin presupuesto publicitario?

Acabo de recibir un montón de sedimentos en el fondo de una botella de vino. ¿Esto es normal?

Si construyera una estrella de la muerte sobre Tatooine, y luego decidiera que quería destruir la Tierra, ¿tendría que hacer que la estrella de la muerte fuera móvil? ¿O sería posible (suponiendo que pudiera recolectar suficiente energía) apuntar y destruir la Tierra, sin obstáculos por objetos inocentes en el camino?