35 lines
1.3 KiB
TeX
35 lines
1.3 KiB
TeX
\documentclass[10pt]{article}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage{amsmath,amsthm,amssymb}
|
|
\usepackage{fullpage}
|
|
\usepackage{url}
|
|
\pagenumbering{gobble}
|
|
\usepackage{hyperref}
|
|
|
|
\title{ Tutorial: Chuva}
|
|
\author{OBI 2019}
|
|
\date{}
|
|
\begin{document}
|
|
\maketitle
|
|
Podemos simular diretamente o espalhamento da água. Cada posição molhada gera
|
|
novas posições molhadas segundo as regras do enunciado:
|
|
\begin{itemize}
|
|
\item se a célula imediatamente abaixo está dentro da matriz e é
|
|
\texttt{.}, ela também fica molhada;
|
|
\item se existe uma prateleira imediatamente abaixo da posição atual, a água
|
|
pode se espalhar para a esquerda e para a direita na mesma linha.
|
|
\end{itemize}
|
|
|
|
Para evitar processar a mesma posição várias vezes, sempre que uma célula
|
|
\texttt{.} fica molhada, trocamos seu caractere para \texttt{o} e a colocamos em
|
|
uma fila. Enquanto a fila não estiver vazia, removemos uma posição e tentamos
|
|
aplicar os movimentos descritos acima.
|
|
|
|
As prateleiras nunca viram água, portanto células com \texttt{\#} são apenas
|
|
obstáculos que podem sustentar o espalhamento lateral.
|
|
|
|
Como cada célula da matriz é inserida na fila no máximo uma vez, a complexidade
|
|
de tempo é $O(N \cdot M)$. A matriz e a fila também usam $O(N \cdot M)$ de
|
|
espaço.
|
|
\end{document}
|