Updating lazy-frog files

This commit is contained in:
2026-05-10 13:44:44 -03:00
parent 9c9bb62c23
commit 189f75019b
70 changed files with 2034 additions and 1 deletions

View File

@@ -0,0 +1,82 @@
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsthm,amssymb}
\usepackage{fullpage}
\usepackage{url}
\pagenumbering{gobble}
\usepackage{hyperref}
\usepackage{graphicx}
\input{statement/preamble.tex}
\title{ Tutorial: Caminho de Menor Soma}
\author{}
\date{}
\begin{document}
\maketitle
\section{Solução do Problema}
O problema consiste em encontrar o \textbf{menor custo} necessário para percorrer uma grade (\textit{matriz}) de inteiros positivos.
A grade possui \( n \) linhas e \( m \) colunas, e cada célula contém um número positivo que representa o custo de passar por ela.
O objetivo é sair da célula \textbf{superior esquerda} da grade e chegar à célula \textbf{inferior direita}, movendo-se apenas para a \textbf{direita} ou para \textbf{baixo}.
A soma dos valores das células visitadas deve ser a menor possível.
Este problema pode ser resolvido de forma eficiente utilizando \textbf{programação dinâmica}.
\subsection{Definição do Subproblema}
Seja uma matriz de custos \( C \) de tamanho \( n \times m \). Definimos:
\[
dp[i][j] = \text{o menor custo para chegar à célula } (i,j) \text{ a partir de } (0,0).
\]
Ou seja, \( dp[i][j] \) representa o custo mínimo para alcançar exatamente a posição \( (i, j) \).
\subsection{Função de Transição}
Como só é possível mover-se para a \textbf{direita} ou para \textbf{baixo}, a célula \( (i,j) \) só pode ser alcançada a partir de:
\begin{itemize}
\item \( (i-1, j) \): movimento vindo de \textbf{cima};
\item \( (i, j-1) \): movimento vindo da \textbf{esquerda}.
\end{itemize}
Assim, o custo mínimo para chegar a \( (i,j) \) é dado por:
\[
dp[i][j] = C[i][j] + \min(dp[i-1][j],\ dp[i][j-1]).
\]
\subsection{Casos Base}
\begin{itemize}
\item Primeira célula:
\[
dp[0][0] = C[0][0]
\]
\item Primeira linha (somente movimentos para a direita):
\[
dp[0][j] = dp[0][j-1] + C[0][j]
\]
\item Primeira coluna (somente movimentos para baixo):
\[
dp[i][0] = dp[i-1][0] + C[i][0]
\]
\end{itemize}
\subsection{Construção da Tabela}
Após inicializar os casos base, preenchermos o restante da matriz \( dp \) utilizando:
\[
dp[i][j] = C[i][j] + \min(dp[i-1][j],\ dp[i][j-1]).
\]
Ao término do processo, o valor da última posição:
\[
dp[n-1][m-1]
\]
representa o \textbf{menor custo possível} para ir da célula inicial até a célula final.\end{document}

Binary file not shown.

View File

@@ -0,0 +1,38 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Caminho de Menor Soma}{1}{256}{}
O problema consiste em encontrar o menor custo possível para percorrer uma grade de inteiros positivos.
A grade possui \( n \) linhas e \( m \) colunas, e cada célula contém um valor inteiro positivo que representa o custo de passar por ela.
O objetivo é sair da célula superior esquerda da grade e chegar à célula inferior direita, movendo-se apenas para a direita ou para baixo.
A soma dos valores das células visitadas deve ser a menor possível.
\Entrada
A entrada é composta por \( n + 1 \) linhas. Na primeira linha, há dois inteiros \( n \) e \( m \) (\( 1 \leq n, m \leq 1000 \)), representando respectivamente o número de linhas e de colunas da grade.
Cada uma das próximas \( n \) linhas contém \( m \) inteiros \( a_{i,j} \) (\( 1 \leq a_{i,j} \leq 100 \)), representando o custo da célula na linha \( i \) e coluna \( j \).
\Saida
Imprima um único inteiro representando o menor custo total para ir da célula superior esquerda até a célula inferior direita, movendo-se apenas para a direita ou para baixo.
\ExemploEntrada
\begin{Exemplo}
\texttt{1~1} & \texttt{5}\\
\texttt{5} & \\
\rowcolor{gray!20}\texttt{2~2} & \texttt{7}\\
\rowcolor{gray!20}\texttt{1~3} & \\
\rowcolor{gray!20}\texttt{2~4} & \\
\texttt{3~3} & \texttt{21}\\
\texttt{1~2~3} & \\
\texttt{4~5~6} & \\
\texttt{7~8~9} & \\
\end{Exemplo}
\end{ProblemaAutor}
\end{document}