Defina o Estado e a Transição
Defina com precisão o significado de dp[i].
Defina o Estado e a Transição é uma aula grátis de Competitive Programming Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Competitive Programming Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Competitive Programming Academy inclui 4 aulas no total.
A essência da DP
Toda DP começa nomeando um estado: o que dp[i] realmente representa? Acerte essa frase e o restante virá naturalmente.
O estado deve ser preciso
Escreva o significado em palavras: dp[i] = a resposta para os primeiros i itens. Uma definição de estado vaga leva a uma recorrência com erros.
dp[i] = best total using items 0..i-1A transição
A transição explica como dp[i] é construído a partir dos estados anteriores. Ela é a equação de recorrência no centro da sua solução.
dp[i] = dp[i-1] + dp[i-2]Os casos-base dão sustentação
Casos-base são os menores estados que você conhece diretamente. Sem bases corretas, todos os valores seguintes acabam incorretos.
dp[0] = 1Escolha uma ordem de avaliação
Cada estado deve ser preenchido depois dos estados dos quais depende. Essa regra de dependência determina a direção dos seus laços.
for i in range(1, n+1): ...Onde está a resposta
Decida qual célula contém o resultado final. Muitas vezes é dp[n], mas às vezes é o máximo de toda a tabela.
answer = dp[n] # or max(dp)Conte os estados
O número de estados distintos determina seu orçamento de tempo. Uma dp unidimensional sobre n itens tem O(n) estados a preencher.
Custo por transição
O tempo total é o número de estados multiplicado pelo trabalho por transição. Uma transição O(n) dentro de n estados resulta em O(n ao quadrado).
Adicione uma dimensão quando necessário
Se um índice não for suficiente para representar a situação, adicione outro. Uma segunda dimensão transforma dp[i] em dp[i][j].
dp = [[0]*(c+1) for _ in range(n+1)]Reconstruir a escolha
Para recuperar a solução real, armazene qual transição venceu em cada estado e, em seguida, retroceda a partir da resposta.
choice[i] = "take"Uma lista de verificação reutilizável
Estado, transição, caso-base, ordem, resposta. Defina esses cinco elementos com precisão, e quase toda recorrência de DP se encaixará.
Verificação rápida
Você está projetando uma DP. O que dp[i] representa?
Recapitulação: dê um nome, depois resolva
Agora você consegue definir um estado, escrever sua transição, estabelecer casos-base e localizar a resposta. Esse esquema transforma a DP de tentativa e erro em uma receita.
Perguntas Frequentes
A aula “Defina o Estado e a Transição” é grátis?
Sim — o texto completo de “Defina o Estado e a Transição” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Competitive Programming Academy, atualize para CoddyKit PRO. O curso de Competitive Programming Academy inclui 4 aulas no total.
O que vou aprender em “Defina o Estado e a Transição”?
Defina com precisão o significado de dp[i]. Você pratica Competitive Programming Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Competitive Programming Academy?
Nenhuma experiência prévia é necessária. Competitive Programming Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Defina o Estado e a Transição”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Competitive Programming Academy?
Sim. Cada aula de Competitive Programming Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Memoização versus Tabulação
- Defina o Estado e a Transição
- Subida de Escadas e Combinações de Moedas
- Maior Subsequência Crescente