feat: new graph problems formatted.
This commit is contained in:
15
chuva/statement/description.tex
Normal file
15
chuva/statement/description.tex
Normal file
@@ -0,0 +1,15 @@
|
||||
Está chovendo tanto na Obilândia que algumas goteiras apareceram dentro da casa
|
||||
do prefeito. Uma delas faz a água escorrer verticalmente a partir de um ponto no
|
||||
teto, em uma parede que possui várias prateleiras horizontais.
|
||||
|
||||
A parede é representada por uma matriz de $N$ linhas e $M$ colunas. O caractere
|
||||
\texttt{.} representa parede seca, o caractere \texttt{\#} representa parte de
|
||||
uma prateleira, e o caractere \texttt{o} representa o ponto inicial do vazamento.
|
||||
|
||||
Quando a água passa por uma posição livre, ela continua escorrendo para baixo. Se
|
||||
a água encontra uma prateleira logo abaixo, ela também passa a escorrer
|
||||
horizontalmente para a esquerda e para a direita sobre essa prateleira, até poder
|
||||
voltar a escorrer para baixo.
|
||||
|
||||
Sua tarefa é determinar todas as posições da parede que ficarão molhadas pela
|
||||
água.
|
||||
10
chuva/statement/input.tex
Normal file
10
chuva/statement/input.tex
Normal file
@@ -0,0 +1,10 @@
|
||||
A primeira linha contém dois inteiros $N$ e $M$ ($3 \le N, M \le 500$),
|
||||
respectivamente o número de linhas e de colunas da matriz.
|
||||
|
||||
As próximas $N$ linhas contêm, cada uma, uma sequência de $M$ caracteres entre
|
||||
\texttt{.}, \texttt{\#} e \texttt{o}, representando a parede no início do
|
||||
vazamento.
|
||||
|
||||
É garantido que $N$ é ímpar, existe exatamente um caractere \texttt{o} na
|
||||
primeira linha, e não há prateleiras nas linhas ímpares, na primeira coluna nem
|
||||
na última coluna.
|
||||
13
chuva/statement/notes.tex
Normal file
13
chuva/statement/notes.tex
Normal file
@@ -0,0 +1,13 @@
|
||||
No primeiro exemplo, a água começa no topo, desce até encontrar a primeira
|
||||
prateleira e passa a escorrer para os lados. Ao chegar nas extremidades de uma
|
||||
prateleira, ela volta a descer e pode repetir o mesmo processo em prateleiras
|
||||
mais abaixo.
|
||||
|
||||
No segundo exemplo, a primeira prateleira desvia a água para a esquerda e para a
|
||||
direita, criando dois caminhos verticais que continuam pela parede.
|
||||
|
||||
No terceiro exemplo, a prateleira logo abaixo da água permite que ela avance para
|
||||
a direita antes de continuar descendo.
|
||||
|
||||
Problema adaptado da OBI 2019, Fase 1:
|
||||
\href{https://olimpiada.ic.unicamp.br/pratique/pu/2019/f1/chuva/}{Chuva}.
|
||||
3
chuva/statement/output.tex
Normal file
3
chuva/statement/output.tex
Normal file
@@ -0,0 +1,3 @@
|
||||
Imprima $N$ linhas, cada uma contendo uma sequência de $M$ caracteres,
|
||||
representando a matriz da entrada depois que todas as posições molhadas forem
|
||||
marcadas com o caractere \texttt{o}.
|
||||
0
chuva/statement/preamble.tex
Normal file
0
chuva/statement/preamble.tex
Normal file
20
chuva/statement/tutorial.tex
Normal file
20
chuva/statement/tutorial.tex
Normal file
@@ -0,0 +1,20 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user