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,72 @@
\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: Knapsack Problem}
\author{}
\date{}
\begin{document}
\maketitle
\section{Solução do Problema}
A solução do problema da mochila 0/1 pode ser abordada por meio de \textit{programação dinâmica}.
A ideia central é decompor o problema em subproblemas menores, de forma que a solução ótima total seja composta pelas soluções ótimas desses subproblemas.
\subsection{Definição do Subproblema}
Seja $dp[i][w]$ o valor máximo que pode ser obtido ao considerar os $i$ primeiros itens, com capacidade máxima da mochila igual a $w$.
\subsection{Função de Transição}
Para cada item $i$ (com peso $p_i$ e valor $v_i$), temos duas opções:
\begin{itemize}
\item Não incluir o item $i$: o valor máximo permanece igual ao do subproblema anterior, isto é, $dp[i-1][w]$.
\item Incluir o item $i$: caso o peso $p_i$ caiba na mochila ($p_i \leq w$), o valor máximo será o valor do item $v_i$ somado ao melhor valor possível com a capacidade restante, $dp[i-1][w - p_i]$.
\end{itemize}
Assim, a função de transição pode ser expressa como:
\[
dp[i][w] =
\begin{cases}
dp[i-1][w], & \text{se } p_i > w \\
\max(dp[i-1][w],\; dp[i-1][w - p_i] + v_i), & \text{caso contrário}
\end{cases}
\]
\subsection{Casos Base}
As condições iniciais são:
\[
dp[0][w] = 0, \quad \forall w \geq 0
\]
\[
dp[i][0] = 0, \quad \forall i \geq 0
\]
Esses casos representam que, com zero itens ou capacidade zero, o valor máximo obtido é zero.
\subsection{Implementação Dinâmica}
O algoritmo preenche uma tabela $dp$ de tamanho $(n+1) \times (W+1)$, onde $n$ é o número de itens e $W$ é a capacidade máxima da mochila.
Cada célula é calculada a partir das decisões descritas na função de transição.
\begin{verbatim}
for i in 1..n:
for w in 1..W:
if peso[i] <= w:
dp[i][w] = max(dp[i-1][w], dp[i-1][w - peso[i]] + valor[i])
else:
dp[i][w] = dp[i-1][w]
\end{verbatim}
O resultado final é dado por $dp[n][W]$, que representa o maior valor possível que pode ser obtido sem ultrapassar a capacidade da mochila.
\end{document}

Binary file not shown.

View File

@@ -0,0 +1,51 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Knapsack Problem}{1}{256}{}
O problema consiste em determinar o maior valor total que pode ser obtido ao selecionar um subconjunto de itens para colocar em uma mochila com capacidade limitada.
Cada item possui um peso e um valor associados, e a mochila só pode suportar um peso total máximo.
O objetivo é escolher um conjunto de itens de forma que a soma de seus pesos não ultrapasse a capacidade máxima da mochila e que a soma de seus valores seja a maior possível.
Cada item pode ser escolhido no máximo uma vez.
\Entrada
A entrada é composta por \( N + 1 \) linhas.
Na primeira linha, há dois inteiros \( N \) e \( W \) (\( 1 \leq N \leq 100 \), \( 1 \leq W \leq 10^5 \)), representando respectivamente o número de itens e a capacidade máxima da mochila.
Cada uma das próximas \( N \) linhas contém dois inteiros \( w_i \) e \( v_i \) (\( 1 \leq w_i \leq W \), \( 1 \leq v_i \leq 10^9 \)), representando respectivamente o peso e o valor do \( i \)-ésimo item.
\Saida
Imprima um único inteiro representando o valor total máximo que pode ser obtido sem exceder a capacidade da mochila.
\ExemploEntrada
\begin{Exemplo}
\texttt{3~8} & \texttt{90}\\
\texttt{3~30} & \\
\texttt{4~50} & \\
\texttt{5~60} & \\
\rowcolor{gray!20}\texttt{5~5} & \texttt{5}\\
\rowcolor{gray!20}\texttt{1~1} & \\
\rowcolor{gray!20}\texttt{1~1} & \\
\rowcolor{gray!20}\texttt{1~1} & \\
\rowcolor{gray!20}\texttt{1~1} & \\
\rowcolor{gray!20}\texttt{1~1} & \\
\texttt{6~15} & \texttt{17}\\
\texttt{6~5} & \\
\texttt{5~6} & \\
\texttt{6~4} & \\
\texttt{6~6} & \\
\texttt{3~5} & \\
\texttt{7~2} & \\
\end{Exemplo}
\Notas
Para o conjunto de itens \( (w_i, v_i) = \{(3, 30), (4, 50), (5, 60)\} \) e capacidade \( W = 8 \), a melhor escolha é pegar os itens de peso 3 e 5, totalizando valor 90.
Para o conjunto de itens \( (1, 1), (1, 1), (1, 1), (1, 1), (1, 1) \) e capacidade \( W = 5 \), todos os itens podem ser colocados, resultando em valor total \( 5 \).
Para o conjunto \( (6, 5), (5, 6), (6, 4), (6, 6), (3, 5), (7, 2) \) e capacidade \( W = 15 \), a melhor combinação alcança valor máximo 17.
\end{ProblemaAutor}
\end{document}