Análise e Soluções de Algoritmos: Programação Dinâmica, Grafos e Matemática Discreta

Programação Dinâmica em Intervalos Circulares A resolução de problemas envolvendo estruturas circulares frequentemente requer a técnica de duplicação do array de entrada para simular o anel linearmente. Para este problema, o primeiro passo é pré-processar a contagem de elementos distintos em todos os intervalos possíveis, o que pode ser realiza ...

Publicado em 7-22 09:56

Implementação de Correspondência de Expressões Regulares com Programação Dinâmica

Descrição do Problema Dada uma string s e um padrão p, implemente uma função que verifique correspondência de expressões regulares com suporte a '.' e '*': '.' corresponde a qualquer caractere único '*' corresponde a zero ou mais ocorrências do elemento precedente A correspondência deve abranger toda a string s, não parcial. Abordagem de Solu ...

Publicado em 7-8 02:26

Soluções para Problemas de Programação Competitiva: Cartas Felizes, Orador, Fila Monotônica e Jogo XA

Relatório de Soluções para P11323 - Cartas Felizes Análise do Problema O objetivo deste problema é minimizar o número de jogadas para descartar todas as cartas. Temos n tipos de cartas, cada um com quantidade v_i. As jogadas possíveis são: - Carta única: 1 carta, 1 jogada. - Par: 2 cartas iguais, 1 jogada. - Trio com acompanhante: 3 cartas igua ...

Publicado em 7-3 19:08

Notas de Simulação Competitiva: Soluções para Três Problemas

A. Preenchimento de Grade Problema baseado em Luogu P3197 [HNOI2008] Prison Break. Aqui está um método para conjecturar uma fórmula: do complexo para o simples, progredindo do superficial para o profundo, encontrando padrões através de força bruta. Uma versão simplificada deste problema, com m fixo em 3, apareceu anteriormente em uma simulação. ...

Publicado em 6-29 22:03

Soluções para os Problemas D e E do Codeforces Round 2013

Problema D Enunciado: Dada uma sequência de inteiros, é permitido realizar operações ilimitadas em que se decrementa o elemento mais à esquerda em 1 e se incremetna o elemento mais à direita em 1. O objetivo é minimizar a diferença entre o valor máximo e mínimo da sequência após as operações. Solução: A solução ótima pode ser encontrada de form ...

Publicado em 6-27 16:59

Soluções para Problemas de Programação Competitiva em 2024

A implementação utiliza uma estrutura de trie para armazenar as permutações. O código abaixo foi refatorado com nomes de variáveis e lógica alterados. #include <bits/stdc++.h> #define endl '\n' using namespace std; const int MAX_PERM = 1e6 + 10; int perm_input[MAX_PERM][11]; int trie[MAX_PERM][11]; int node_counter; void resolver() { ...

Publicado em 6-20 19:03

Cálculo de Conexões em Retângulos, Fusão de Segment Trees, Análise Combinatória e Caminho de Menor Custo

Cálculo de Conexões em Retângulos Este problema envolve a determinação do número total de "pontos de conexão" ou "ligações" dentro e entre uma coleção de retângulos em um plano 2D. A abordagem mais direta para resolvê-lo é a simulação. Estratégia de Resolução As ligações podem ser categorizadas em dois tipos principais: Lig ...

Publicado em 6-18 16:59

Otimização de Problemas de Mochila usando Programação Dinâmica

Mochila 0/1 (0/1 Knapsack) O problema da Mochila 0/1 restringe a seleção de cada item a, no máximo, uma única vez. Embora possa ser resolvido utilizando uma matriz bidimensional para rastrear os estados, é possível otimizar o consumo de memória reduzindo a estrutura para um array unidimensional. A chave para a otimização unidimensional reside n ...

Publicado em 6-11 01:19

Contagem de Cadeias Não-Palindrômicas com Programação por Dígitos

Problema P6754 Dado um intervalo \([a,b]\), determinar a quantidade de cadeias de dígitos com comprimento \(\geq 2\) que não são palíndromos. Abordagem por Programação Dinâmica Defina dp[pos][d1][d2] como a contagem de sequências de comprimento pos, onde d1 é o dígito mais significativo e d2 é o segundo dígito mais significativo, que respeitam ...

Publicado em 6-7 19:07