Esqueleto de Conhecimento em Algoritmos Competitivos
Tópicos Diversos
DP com transição linear entre estados
Inicialização
Inicializar todos os estágios conforme o contexto do problema
DP sobre Subconjuntos
Iteração sobre submáscaras para DP em conjuntos
DP de Dígitos
Dependência com dígitos anteriores
Independência entre dígitos
DP Matricial
Definição da matriz base, matriz de transição ...
Publicado em 7-2 20:28
Verificação de Intercalação de Strings com Programação Dinâmica
Este problema envolve determinar se uma terceira string é formada pela intercalação de caracteres de duas outras strings, mantendo a ordem original dos caracteres dentro de cada uma das duas primeiras strings. Por exemplo, "cat" e "tree" podem formar "cattree", mas não "tretac".
Uma abordagem inicial para ...
Publicado em 7-2 19:57
Resoluções da Competição NOIP: Análise de Problemas de Programação
\(100+100+40+0\), T3 não otimizado corretamente resultou em \(20\) pontos perdidos.
Posteriormente, descobri que durante a competição, a solução para T3 tinha complexidade de tempo e correção corretas, apenas com uma grande contsante que me fez achar que não executaria dentro do tempo limite.
A. Conjunto
A resposta satisfaz a propriedade monóto ...
Publicado em 7-1 17:46
Coloração de Grafos Bipartidos em Programação Competitiva
Fundametnos de Grafos Bipartidos
Um grafo é bipartido se e somente se não contém ciclos de comprimento ímpar. Um método eficiente para verificar essa propriedade é a coloração por busca em profundidade (DFS). A ideia é tentar atribuir dois rótulos (0 ou 1) aos vértices de modo que vértices adjacentes tenham rótulos diferentes. Se em algum momen ...
Publicado em 6-28 17:07
Problemas de Programação para Engenheiros de Software da Sohu 2016
1、[Problema de Programação] Torre do Circo
O funcionário da Sohu, Wang, recentemente aproveitou suas férias para viajar e em uma pequena cidade encontrou uma apresentação de circo. Após o espetáculo emocionante, ele descobriu que o diretor estava discutindo intensamente com a equipe na frante da tenda. Wang perguntou e descobriu que o circo es ...
Publicado em 6-26 20:24
Contagem de DP em Autômatos para Algoritmos de Strings
Este artigo explora o uso de programação dinâmica (DP) em autômatos construídos, com foco no autômato KMP e na árvore de falhas para resolver problemas de contagem em strings.
Autômato KMP e Árvore de Falhas
O autômato KMP é uma estrutura que permite correspondência eficiante de padrões. A função de falha (fail) e a tabela de transição (next) s ...
Publicado em 6-26 05:16
Programação Dinâmica da Mochila
P2340 [USACO03FALL] Cow Exhibition G Enunciado: Dadas N vacas, cada uma com QI S e QE F, selecione algumas vacas de modo que a soma dos QIs e a soma dos QEs sejam ambas positivas, maximziando a soma total (S + F). Abordagem: Podemos tratar o QI como peso e o QE como valor, resolvendo um problema de mochila 0/1. Como o QI pode ser negativo, usam ...
Publicado em 6-22 16:46
Programação Dinâmica: Abordagens e Aplicações Práticas
2024.04.06
Este artigo explora os fundamentos da programação dinâmica, abordando quatro problemas clássicos que demonstram diferentes aplicações dessa técnica poderosa:
Mochila Completa
Troco de Moedas II
Soma de Combinações IV
Divisão de Palavras
A metodologia para resolver problemas de programação dinâmica envolve cinco passos essenciais:
...
Publicado em 6-19 04:46
Algoritmos Gulosos: Implementações e Análise em C++
Exercícios Práticos de Algoritmo Guloso
Problema 455: Distribuição de Biscoitos
A abordagem gulosa envolve ordenar as necessidades das crianças e os tamanhos dos biscoitos, e depois alocar o maior biscotio disponível para a criança com maior necessidade que ele possa satsifazer.
class Solucao {
public:
int encontrarCriancasContentes(vector& ...
Publicado em 6-12 19:28
Otimizando a Construção de Grafos com Busca Memorizada
O código original, que utiliza uma abordagem de O(n²) para construir o grafo, resultou em um tempo de execução de 772ms. A principal causa dessa complexidade é a maneira como as arestas são adicionadas entre os nós.
#include<bits>
#define int long long
using namespace std;
const int N=1e6+10,M=1e4+10;
int n,m,res,f[N],p[N],a[N],s,k,level ...
Publicado em 6-9 23:36