Updating lazy-frog files
This commit is contained in:
BIN
rod-cutting/arthur-dolival-rod-cutting-tutorial.pdf
Normal file
BIN
rod-cutting/arthur-dolival-rod-cutting-tutorial.pdf
Normal file
Binary file not shown.
55
rod-cutting/arthur-dolival-rod-cutting-tutorial.tex
Normal file
55
rod-cutting/arthur-dolival-rod-cutting-tutorial.tex
Normal file
@@ -0,0 +1,55 @@
|
||||
\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: Barras e Barras}
|
||||
\author{}
|
||||
\date{}
|
||||
\begin{document}
|
||||
\maketitle
|
||||
\section{Solução do Problema}
|
||||
|
||||
O problema do corte de barras (\textit{Rod Cutting}) pode ser resolvido de forma eficiente por meio de \textbf{programação dinâmica}.
|
||||
A ideia é decompor o problema em subproblemas menores: para cada comprimento \(L\) queremos saber qual é a melhor receita máxima que podemos obter cortando (ou não cortando) uma barra de comprimento \(L\).
|
||||
|
||||
\subsection{Definição do Subproblema}
|
||||
|
||||
Seja \(p[1 \dots n]\) o vetor de preços onde \(p[i]\) é o preço de vender um pedaço de comprimento \(i\).
|
||||
Definimos:
|
||||
|
||||
\[
|
||||
dp[L] = \text{o maior receita obtida cortando uma barra de comprimento } L.
|
||||
\]
|
||||
|
||||
Assim, \(dp[L]\) representa a resposta ótima para uma barra de tamanho \(L\).
|
||||
|
||||
\subsection{Função de Transição}
|
||||
|
||||
Para determinar \(dp[L]\) consideramos a primeira peça que retiramos da barra: se escolhemos cortar uma peça de tamanho \(x\) (com \(1 \le x \le L\)), obtemos imediatamente o preço \(p[x]\) e ficamos com o subproblema da barra restante de tamanho \(L-x\), cujo melhor valor é \(dp[L-x]\). Logo:
|
||||
|
||||
\[
|
||||
dp[L] = \max_{1 \le x \le L} \big( p[x] + dp[L-x] \big).
|
||||
\]
|
||||
|
||||
Em particular, se não fizermos cortes (i.e., vendermos a barra inteira), isso corresponde ao caso \(x=L\) e é coberto pela fórmula acima.
|
||||
|
||||
\subsection{Casos Base}
|
||||
|
||||
O caso base é natural:
|
||||
|
||||
\[
|
||||
dp[0] = 0,
|
||||
\]
|
||||
|
||||
isto é, uma barra de comprimento zero tem receita zero.
|
||||
|
||||
\subsection{Recuperação da Decomposição (pedaços)}
|
||||
|
||||
Para além do valor máximo \(dp[n]\), frequentemente queremos também uma decomposição concreta (lista de comprimentos dos pedaços) que atinja esse valor. Para isso mantemos, durante a computação de \(dp\), um vetor auxiliar \texttt{cut[L]} que armazena o tamanho \(x\) do primeiro pedaço que produz o ótimo para \(dp[L]\). Após preencher \(dp\) e \texttt{cut}, reconstruímos os pedaços repetindo a operação: tomar \(x=\texttt{cut}[L]\), imprimir \(x\), e reduzir \(L \leftarrow L - x\), até \(L=0\).
|
||||
\end{document}
|
||||
BIN
rod-cutting/arthur-dolival-rod-cutting.pdf
Normal file
BIN
rod-cutting/arthur-dolival-rod-cutting.pdf
Normal file
Binary file not shown.
47
rod-cutting/arthur-dolival-rod-cutting.tex
Normal file
47
rod-cutting/arthur-dolival-rod-cutting.tex
Normal file
@@ -0,0 +1,47 @@
|
||||
\documentclass{maratona}
|
||||
|
||||
\begin{document}
|
||||
\begin{ProblemaAutor}{}{Barras e Barras}{1}{256}{}
|
||||
|
||||
Dado um pedaço de barra de aço de comprimento \( n \) polegadas, deseja-se cortar essa barra em partes menores de forma a maximizar o lucro total obtido.
|
||||
|
||||
Cada corte é gratuito e o comprimento de cada pedaço resultante deve ser um número inteiro de polegadas.
|
||||
|
||||
É fornecida uma tabela de preços \( p_i \), onde \( p_i \) representa o preço de venda de uma barra de comprimento \( i \).
|
||||
|
||||
O objetivo é determinar qual é a \textbf{maior receita possível} ao cortar (ou não cortar) a barra original, bem como uma decomposição válida cujos comprimentos somados sejam exatamente \( n \) e cujo valor total seja igual à receita máxima.
|
||||
|
||||
\Entrada
|
||||
|
||||
A entrada é composta por duas linhas.
|
||||
A primeira linha contém um inteiro \( n \) (\( 1 \le n \le 1000 \)), representando o comprimento da barra de aço.
|
||||
A segunda linha contém \( n \) inteiros positivos \( p_1, p_2, \ldots, p_n \), onde \( 1 \le p_i \le 10000 \), e \( p_i \) indica o preço de uma barra de comprimento \( i \).
|
||||
|
||||
\Saida
|
||||
|
||||
A saída é composta por duas linhas.
|
||||
Na primeira linha deve ser impresso um inteiro representando a \textbf{receita máxima} que pode ser obtida cortando a barra.
|
||||
Na segunda linha deve ser impressa uma sequência de inteiros positivos representando os comprimentos dos pedaços utilizados, cuja soma deve ser exatamente \( n \).
|
||||
|
||||
É permitido imprimir os pedaços em qualquer ordem.
|
||||
|
||||
\ExemploEntrada
|
||||
|
||||
\begin{Exemplo}
|
||||
\texttt{8} & \texttt{22}\\
|
||||
\texttt{1~5~8~9~10~17~17~20} & \texttt{2~6}\\
|
||||
\rowcolor{gray!20}\texttt{4} & \texttt{5}\\
|
||||
\rowcolor{gray!20}\texttt{1~2~3~5} & \texttt{4}\\
|
||||
\texttt{8} & \texttt{24}\\
|
||||
\texttt{3~5~8~9~10~17~17~20} & \texttt{1~1~1~1~1~1~1~1}\\
|
||||
\end{Exemplo}
|
||||
|
||||
|
||||
|
||||
\Notas
|
||||
|
||||
No primeiro caso, a barra possui tamanho 8 e os preços fornecidos indicam o valor de venda de cada tamanho possível. A saída informa que a decomposição escolhida foi em pedaços de tamanhos 2 e 6, que somam exatamente o tamanho total da barra. O preço do pedaço de tamanho 2 é 5 e o preço do pedaço de tamanho 6 é 17, totalizando 22. Não existe nenhuma outra forma de cortar a barra que produza um valor maior do que esse, portanto a solução apresentada é ótima.
|
||||
|
||||
No segundo caso, a barra possui tamanho 4. O preço de venda para a barra inteira de tamanho 4 é 5. Qualquer tentativa de cortar a barra em pedaços menores resulta em um valor total inferior, já que combinações como 1+3, 2+2 ou quatro pedaços de 1 produzem lucro máximo igual a 4. Assim, o melhor é não realizar nenhum corte e vender a barra inteira. Dessa forma, o valor ótimo é 5 e a decomposição correspondente consiste apenas no pedaço de tamanho 4.
|
||||
\end{ProblemaAutor}
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user