Updating lazy-frog files
This commit is contained in:
BIN
subset-sum/arthur-dolival-subset-sum-tutorial.pdf
Normal file
BIN
subset-sum/arthur-dolival-subset-sum-tutorial.pdf
Normal file
Binary file not shown.
45
subset-sum/arthur-dolival-subset-sum-tutorial.tex
Normal file
45
subset-sum/arthur-dolival-subset-sum-tutorial.tex
Normal file
@@ -0,0 +1,45 @@
|
||||
\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: Prateleira Dourada}
|
||||
\author{}
|
||||
\date{}
|
||||
\begin{document}
|
||||
\maketitle
|
||||
\section{Solução do Problema}
|
||||
|
||||
O problema de organizar os livros para preencher exatamente a prateleira é uma aplicação clássica do problema da \textbf{Soma de Subconjuntos} (\textit{Subset Sum}), que é uma variação do problema da Mochila (0/1 \textit{Knapsack}). Podemos resolvê-lo de forma eficiente utilizando \textbf{programação dinâmica}. A ideia é rastrear todos os comprimentos parciais possíveis que conseguimos formar com as combinações de livros avaliados até o momento.
|
||||
|
||||
\subsection{Definição do Subproblema}
|
||||
|
||||
Seja $T$ o comprimento total da prateleira.
|
||||
Definimos o nosso estado da programação dinâmica como um vetor booleano:
|
||||
|
||||
$$dp[j] = \text{1 se for possível formar o comprimento exato } j \text{ com algum subconjunto dos livros.}$$
|
||||
|
||||
O nosso objetivo final é descobrir se, após testar todas as combinações de livros, o estado $dp[T]$ se torna verdadeiro.
|
||||
|
||||
\subsection{Função de Transição}
|
||||
|
||||
Para atualizar os nossos estados, iteramos e avaliamos um livro de cada vez. Seja $x$ a espessura do livro atual.
|
||||
A lógica é simples: se já descobrimos que é possível formar uma pilha de livros com espessura exata $j$ (ou seja, $dp[j] == 1$), então, ao colocar esse novo livro na pilha, também seremos capazes de alcançar a espessura $j + x$.
|
||||
|
||||
A transição, pode ser descrita como:
|
||||
|
||||
$$dp[j + x] = dp[j + x] \lor dp[j]$$
|
||||
|
||||
\textbf{Detalhe crucial de implementação:} Para garantir que o bibliotecário use cada livro \textbf{no máximo uma vez}, precisamos percorrer as capacidades de trás para frente (começando em $T - x$ e diminuindo até $0$). Se iterássemos da esquerda para a direita, um livro poderia ser considerado mais de uma vez, o que não é o correto nesse problema.
|
||||
\subsection{Casos Base}
|
||||
|
||||
O caso base representa a situação em que não selecionamos livro algum. A soma das espessuras de uma prateleira vazia é zero. Portanto, é sempre possível "formar" o comprimento $0$:
|
||||
|
||||
$$dp[0] = 1$$
|
||||
|
||||
Todos os outros comprimentos no vetor de $1$ a $T$ nascem como $0$ (falsos/impossíveis), pois ainda precisamos descobrir se eles podem ser alcançados utilizando os livros da pilha.\end{document}
|
||||
BIN
subset-sum/arthur-dolival-subset-sum.pdf
Normal file
BIN
subset-sum/arthur-dolival-subset-sum.pdf
Normal file
Binary file not shown.
43
subset-sum/arthur-dolival-subset-sum.tex
Normal file
43
subset-sum/arthur-dolival-subset-sum.tex
Normal file
@@ -0,0 +1,43 @@
|
||||
\documentclass{maratona}
|
||||
|
||||
\begin{document}
|
||||
\begin{ProblemaAutor}{}{Prateleira Dourada}{1}{256}{}
|
||||
|
||||
Você foi recentemente contratado como arquivista júnior na Biblioteca Central, lar de manuscritos inestimáveis. Sua primeira grande tarefa é organizar a famosa \textbf{Prateleira Dourada}, um espaço de exposição reservado apenas para as obras mais raras.
|
||||
|
||||
Esta prateleira possui um comprimento físico exato de $T$ centímetros. O bibliotecário-chefe, Sr. Justino, é famoso por sua exigência extrema com a estética e a preservação: ele abomina espaços vazios onde a poeira possa se acumular, mas também proíbe terminantemente que os livros sejam espremidos, o que danificaria suas capas de couro.
|
||||
|
||||
Para o Sr. Justino, a organização só é aceitável se a prateleira for preenchida \textbf{de ponta a ponta}, sem que sobre ou falte qualquer espaço.
|
||||
|
||||
Você recebeu uma pilha contendo $n$ livros raros. Cada livro possui uma espessura específica. Sua missão é verificar se existe uma seleção de livros cuja soma das espessuras seja \textbf{exatamente} igual ao comprimento $T$ da prateleira.
|
||||
|
||||
\Entrada
|
||||
|
||||
A primeira linha possui dois inteiros: $n$ ($1 \le n \le 1\,000$), representando a quantidade de livros, e $T$ ($1 \le T \le 10\,000$), o comprimento total da prateleira, em centímetros.
|
||||
A segunda linha contém $n$ inteiros positivos $a_1, a_2, \dots, a_n$, as larguras dos livros em centímetros, com $1 \le a_i \le 1\,000$.
|
||||
|
||||
\Saida
|
||||
|
||||
Imprima exatamente uma linha: \texttt{PERFEITO!} caso exista um subconjunto de livros cuja soma das larguras seja exatamente $T$, ou \texttt{IMPOSSIVEL!} caso contrário.
|
||||
|
||||
\ExemploEntrada
|
||||
|
||||
\begin{Exemplo}
|
||||
\texttt{5~10} & \texttt{PERFEITO!}\\
|
||||
\texttt{1~2~3~4~5} & \\
|
||||
\rowcolor{gray!20}\texttt{4~4} & \texttt{IMPOSSIVEL!}\\
|
||||
\rowcolor{gray!20}\texttt{5~1~2~5} & \\
|
||||
\texttt{8~14} & \texttt{PERFEITO!}\\
|
||||
\texttt{1~2~3~4~4~9~9~15} & \\
|
||||
\end{Exemplo}
|
||||
|
||||
|
||||
|
||||
\Notas
|
||||
|
||||
No primeiro caso de teste é possível escolher os livros de comprimentos 2, 3 e 5.
|
||||
|
||||
No segundo caso de teste nenhuma combinação de livros resultará no comprimento da prateleira.
|
||||
|
||||
No Terceiro caso de teste é possível escolher os livros de comprimentos 9, 4, e 1. Outra opção seriam os livros de comprimentos 1, 2, 3, 4, 4.\end{ProblemaAutor}
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user