diff --git a/analise-de-dados/analise-de-dados-tutorial.pdf b/analise-de-dados/analise-de-dados-tutorial.pdf new file mode 100644 index 0000000..7be0545 Binary files /dev/null and b/analise-de-dados/analise-de-dados-tutorial.pdf differ diff --git a/analise-de-dados/analise-de-dados-tutorial.tex b/analise-de-dados/analise-de-dados-tutorial.tex new file mode 100644 index 0000000..cb3c296 --- /dev/null +++ b/analise-de-dados/analise-de-dados-tutorial.tex @@ -0,0 +1,44 @@ +\documentclass[10pt]{article} +\usepackage[utf8]{inputenc} +\usepackage{amsmath,amsthm,amssymb} +\usepackage{fullpage} +\usepackage{url} +\pagenumbering{gobble} +\usepackage{hyperref} + +\title{ Tutorial: Análise de Dados} +\author{Leetcode 1223} +\date{} +\begin{document} +\maketitle +O problema pode ser resolvido por meio de uma abordagem de \textbf{programação dinâmica}, onde calculamos o número de sequências válidas de lançamentos de dados até cada posição, levando em consideração qual foi a última face sorteada e quantas vezes ela apareceu consecutivamente. + +A principal restrição é que cada face \( i \) (\(1 \le i \le 6\)) só pode aparecer no máximo \( d_i \) vezes seguidas. Assim, ao adicionar um novo lançamento à sequência, precisamos garantir que essa condição nunca seja violada. + +Definimos a seguinte estrutura de DP: + +\[ +dp[i][j] = \text{número de sequências válidas de comprimento } i \text{ cuja última face lançada é } j +\] + +Para lidar com o número de repetições consecutivas, expandimos a ideia considerando blocos consecutivos de uma mesma face. +Para cada face \( k \), podemos adicioná-la de \(1\) até \(d_k\) vezes, desde que a sequência anterior termine com uma face diferente de \(k\). + +Assim, a função de transição é dada por: +\[ +dp[i][k] = \sum_{j \ne k} \sum_{x = 1}^{\min(d_k, i)} dp[i - x][j] +\] +onde o termo \(dp[i - x][j]\) representa o número de sequências de comprimento \(i - x\) que terminam com uma face diferente de \(k\), às quais adicionamos \(x\) ocorrências consecutivas da face \(k\). + +As condições iniciais são: +\[ +dp[0][j] = 1, \quad \forall j \in \{1, 2, 3, 4, 5, 6\} +\] +representando a sequência vazia inicial, que serve como base para as transições. + +A resposta final será a soma de todas as formas possíveis de terminar a sequência de comprimento \(n\): +\[ +\sum_{j=1}^{6} dp[n][j] \bmod (10^9 + 7) +\] + +A complexidade temporal dessa solução é \(O(n \times 6 \times \text{max}(d_i))\), pois para cada posição e cada face consideramos até \(d_i\) possíveis comprimentos de repetições.\end{document} diff --git a/analise-de-dados/analise-de-dados.pdf b/analise-de-dados/analise-de-dados.pdf index ee4f6c2..4c2f528 100644 Binary files a/analise-de-dados/analise-de-dados.pdf and b/analise-de-dados/analise-de-dados.pdf differ diff --git a/analise-de-dados/statement/tutorial.tex b/analise-de-dados/statement/tutorial.tex index e69de29..a77e8c3 100644 --- a/analise-de-dados/statement/tutorial.tex +++ b/analise-de-dados/statement/tutorial.tex @@ -0,0 +1,31 @@ +O problema pode ser resolvido por meio de uma abordagem de \textbf{programação dinâmica}, onde calculamos o número de sequências válidas de lançamentos de dados até cada posição, levando em consideração qual foi a última face sorteada e quantas vezes ela apareceu consecutivamente. + +A principal restrição é que cada face \( i \) (\(1 \le i \le 6\)) só pode aparecer no máximo \( d_i \) vezes seguidas. Assim, ao adicionar um novo lançamento à sequência, precisamos garantir que essa condição nunca seja violada. + +Definimos a seguinte estrutura de DP: + +\[ +dp[i][j] = \text{número de sequências válidas de comprimento } i \text{ cuja última face lançada é } j +\] + +Para lidar com o número de repetições consecutivas, expandimos a ideia considerando blocos consecutivos de uma mesma face. +Para cada face \( k \), podemos adicioná-la de \(1\) até \(d_k\) vezes, desde que a sequência anterior termine com uma face diferente de \(k\). + +Assim, a função de transição é dada por: +\[ +dp[i][k] = \sum_{j \ne k} \sum_{x = 1}^{\min(d_k, i)} dp[i - x][j] +\] +onde o termo \(dp[i - x][j]\) representa o número de sequências de comprimento \(i - x\) que terminam com uma face diferente de \(k\), às quais adicionamos \(x\) ocorrências consecutivas da face \(k\). + +As condições iniciais são: +\[ +dp[0][j] = 1, \quad \forall j \in \{1, 2, 3, 4, 5, 6\} +\] +representando a sequência vazia inicial, que serve como base para as transições. + +A resposta final será a soma de todas as formas possíveis de terminar a sequência de comprimento \(n\): +\[ +\sum_{j=1}^{6} dp[n][j] \bmod (10^9 + 7) +\] + +A complexidade temporal dessa solução é \(O(n \times 6 \times \text{max}(d_i))\), pois para cada posição e cada face consideramos até \(d_i\) possíveis comprimentos de repetições. \ No newline at end of file diff --git a/argus/argus-tutorial.pdf b/argus/argus-tutorial.pdf new file mode 100644 index 0000000..942241c Binary files /dev/null and b/argus/argus-tutorial.pdf differ diff --git a/argus/argus-tutorial.tex b/argus/argus-tutorial.tex new file mode 100644 index 0000000..23f8210 --- /dev/null +++ b/argus/argus-tutorial.tex @@ -0,0 +1,24 @@ +\documentclass[10pt]{article} +\usepackage[utf8]{inputenc} +\usepackage{amsmath,amsthm,amssymb} +\usepackage{fullpage} +\usepackage{url} +\pagenumbering{gobble} +\usepackage{hyperref} + +\title{ Tutorial: Argus} +\author{UVA - 1203} +\date{} +\begin{document} +\maketitle +Para resolver o problema, utilizaremos uma \textbf{fila de prioridade (min-heap)} que armazenará os instantes em que cada medicamento deve ser tomado novamente, juntamente com o nome do medicamento. Dessa forma, sempre poderemos determinar facilmente qual é o próximo medicamento a ser administrado. + +Inicialmente, inserimos na fila todos os medicamentos com o tempo de sua \textit{primeira dose}. Em seguida, repetimos o seguinte processo até listar todas as doses necessárias: +\begin{enumerate} + \item Remover da fila o medicamento com o menor tempo de administração (isto é, o que deve ser tomado mais cedo). + \item Imprimir o nome do medicamento e o tempo. + \item Calcular o próximo instante em que esse medicamento deverá ser tomado, somando o seu intervalo de tempo ao instante atual. + \item Inserir novamente o medicamento na fila com o novo instante calculado. +\end{enumerate} + +Esse método garante que os medicamentos sejam listados em ordem cronológica, respeitando os intervalos de cada um e evitando que qualquer dose seja esquecida.\end{document} diff --git a/argus/argus.pdf b/argus/argus.pdf index db676fe..b7b8162 100644 Binary files a/argus/argus.pdf and b/argus/argus.pdf differ diff --git a/bolhas/bolhas-tutorial.pdf b/bolhas/bolhas-tutorial.pdf index ea9ae43..4643096 100644 Binary files a/bolhas/bolhas-tutorial.pdf and b/bolhas/bolhas-tutorial.pdf differ diff --git a/bolhas/bolhas.pdf b/bolhas/bolhas.pdf index 1d1b4e3..636c87d 100644 Binary files a/bolhas/bolhas.pdf and b/bolhas/bolhas.pdf differ diff --git a/breakdown-desastroso/breakdown-desastroso-tutorial.pdf b/breakdown-desastroso/breakdown-desastroso-tutorial.pdf new file mode 100644 index 0000000..edce9fd Binary files /dev/null and b/breakdown-desastroso/breakdown-desastroso-tutorial.pdf differ diff --git a/breakdown-desastroso/breakdown-desastroso-tutorial.tex b/breakdown-desastroso/breakdown-desastroso-tutorial.tex new file mode 100644 index 0000000..c97b65b --- /dev/null +++ b/breakdown-desastroso/breakdown-desastroso-tutorial.tex @@ -0,0 +1,31 @@ +\documentclass[10pt]{article} +\usepackage[utf8]{inputenc} +\usepackage{amsmath,amsthm,amssymb} +\usepackage{fullpage} +\usepackage{url} +\pagenumbering{gobble} +\usepackage{hyperref} + +\title{ Tutorial: Breakdown Desastroso} +\author{Kattis - Disastrous Downtime} +\date{} +\begin{document} +\maketitle +Para resolver o problema, utilizaremos uma \textbf{fila de prioridade (min-heap)} para armazenar o \textbf{instante em que cada servidor ficará livre} para ser utilizado novamente. Além disso, manteremos uma variável para registrar o \textbf{número máximo de servidores ativos} em um dado momento da simulação. + +A cada nova requisição, verificamos o elemento no topo da fila, isto é, o servidor que ficará disponível mais cedo. +\begin{itemize} + \item Se o tempo armazenado nesse elemento for \textbf{menor que o instante da requisição atual}, significa que o servidor já está livre e pode ser reutilizado, então o removemos da fila. + \item Caso contrário, o servidor ainda está ocupado, e portanto \textbf{precisaremos ativar um novo servidor} para atender à requisição. +\end{itemize} + +Em ambos os casos, inserimos na fila um novo valor correspondente a $(instante\_requisição + 1000)$, indicando que o servidor recém-utilizado permanecerá ocupado pelos próximos $1000$ milissegundos. + +Durante o processo, atualizamos continuamente a variável que armazena o \textbf{maior tamanho alcançado pela fila}, representando o pico de servidores simultaneamente ativos. + +Ao final da simulação, o número mínimo de servidores necessários será dado por: +\[ +\left\lceil \frac{n_{\text{máx}}}{K} \right\rceil +\] +onde $K$ é o número de requisições que cada servidor consegue processar simultaneamente. +\end{document} diff --git a/breakdown-desastroso/breakdown-desastroso.pdf b/breakdown-desastroso/breakdown-desastroso.pdf index 4230db7..2a5c41e 100644 Binary files a/breakdown-desastroso/breakdown-desastroso.pdf and b/breakdown-desastroso/breakdown-desastroso.pdf differ diff --git a/caching-offline/caching-offline-tutorial.pdf b/caching-offline/caching-offline-tutorial.pdf index e5fdb1f..e9381fd 100644 Binary files a/caching-offline/caching-offline-tutorial.pdf and b/caching-offline/caching-offline-tutorial.pdf differ diff --git a/caching-offline/caching-offline.pdf b/caching-offline/caching-offline.pdf index b6be7ae..989d42b 100644 Binary files a/caching-offline/caching-offline.pdf and b/caching-offline/caching-offline.pdf differ diff --git a/conversor-fonetico-generico/conversor-fonetico-generico-tutorial.pdf b/conversor-fonetico-generico/conversor-fonetico-generico-tutorial.pdf index da1e78a..d4f04b2 100644 Binary files a/conversor-fonetico-generico/conversor-fonetico-generico-tutorial.pdf and b/conversor-fonetico-generico/conversor-fonetico-generico-tutorial.pdf differ diff --git a/conversor-fonetico-generico/conversor-fonetico-generico.pdf b/conversor-fonetico-generico/conversor-fonetico-generico.pdf index 0b8d1c8..dd3e675 100644 Binary files a/conversor-fonetico-generico/conversor-fonetico-generico.pdf and b/conversor-fonetico-generico/conversor-fonetico-generico.pdf differ diff --git a/decode-ways/decode-ways-tutorial.pdf b/decode-ways/decode-ways-tutorial.pdf index edc125e..5d96261 100644 Binary files a/decode-ways/decode-ways-tutorial.pdf and b/decode-ways/decode-ways-tutorial.pdf differ diff --git a/decode-ways/decode-ways.pdf b/decode-ways/decode-ways.pdf index 8c37d63..9f6fadc 100644 Binary files a/decode-ways/decode-ways.pdf and b/decode-ways/decode-ways.pdf differ diff --git a/delete-and-earn/delete-and-earn-tutorial.pdf b/delete-and-earn/delete-and-earn-tutorial.pdf index cde11c1..6aa1f17 100644 Binary files a/delete-and-earn/delete-and-earn-tutorial.pdf and b/delete-and-earn/delete-and-earn-tutorial.pdf differ diff --git a/delete-and-earn/delete-and-earn.pdf b/delete-and-earn/delete-and-earn.pdf index e20c517..d62388d 100644 Binary files a/delete-and-earn/delete-and-earn.pdf and b/delete-and-earn/delete-and-earn.pdf differ diff --git a/dominancia-de-pontos/dominancia-de-pontos.pdf b/dominancia-de-pontos/dominancia-de-pontos.pdf index 7871c93..9e8f54f 100644 Binary files a/dominancia-de-pontos/dominancia-de-pontos.pdf and b/dominancia-de-pontos/dominancia-de-pontos.pdf differ diff --git a/edit-distance/edit-distance-tutorial.pdf b/edit-distance/edit-distance-tutorial.pdf index 1299432..eb7891a 100644 Binary files a/edit-distance/edit-distance-tutorial.pdf and b/edit-distance/edit-distance-tutorial.pdf differ diff --git a/edit-distance/edit-distance.pdf b/edit-distance/edit-distance.pdf index 7db2672..312fb8a 100644 Binary files a/edit-distance/edit-distance.pdf and b/edit-distance/edit-distance.pdf differ diff --git a/estouro/estouro-tutorial.pdf b/estouro/estouro-tutorial.pdf new file mode 100644 index 0000000..9e1cb4f Binary files /dev/null and b/estouro/estouro-tutorial.pdf differ diff --git a/estouro/estouro-tutorial.tex b/estouro/estouro-tutorial.tex new file mode 100644 index 0000000..5359602 --- /dev/null +++ b/estouro/estouro-tutorial.tex @@ -0,0 +1,52 @@ +\documentclass[10pt]{article} +\usepackage[utf8]{inputenc} +\usepackage{amsmath,amsthm,amssymb} +\usepackage{fullpage} +\usepackage{url} +\pagenumbering{gobble} +\usepackage{hyperref} + +\title{ Tutorial: Estouro} +\author{Leetcode 312} +\date{} +\begin{document} +\maketitle +\section{Solução do Problema} + +O problema de maximizar a energia ao estourar balões pode ser resolvido de forma eficiente por meio de \textbf{programação dinâmica em intervalos}. A grande sacada para modelar este problema é pensar no processo de trás para frente: em vez de tentar adivinhar qual balão estourar primeiro, o que muda constantemente os vizinhos dos balões restantes, escolhemos qual será o \textbf{último balão} a ser estourado em um determinado subintervalo. + +Para lidar com as bordas da fileira sem precisar de múltiplos \texttt{if}s, adicionamos balões virtuais com valor $1$ nas extremidades. + +\subsection{Definição do Subproblema} + +Seja a nossa fileira de balões original de tamanho $N$. Criamos um novo vetor $B$ de tamanho $N+2$, onde $B[0] = 1$, $B[N+1] = 1$, e as posições de $1$ a $N$ recebem os valores fornecidos. + +Definimos o nosso estado da programação dinâmica como: + +$$dp[i][j] = \text{a quantidade máxima de energia obtida ao estourar todos os balões no intervalo } [i, j].$$ + +Assim, $dp[1][N]$ representará a nossa resposta ótima, correspondente ao intervalo que engloba todos os balões reais. + +\subsection{Função de Transição} + +Para calcular $dp[i][j]$, vamos iterar por um pivô $k$ (com $i \le k \le j$) que representa o \textbf{último balão} a ser estourado dentro desse subintervalo. + +Como $k$ é o último a sobreviver entre $i$ e $j$, todos os outros balões internos já foram estourados. Consequentemente, no exato momento da explosão de $k$, seus vizinhos diretos garantidamente serão $B[i-1]$ e $B[j+1]$. A energia liberada por esse estopim final será $B[i-1] \times B[k] \times B[j+1]$. + +O valor total do intervalo será a soma da energia desse balão $k$ com as energias máximas dos subproblemas que o antecederam na ordem cronológica de explosão: o intervalo à esquerda ($i$ até $k-1$) e o intervalo à direita ($k+1$ até $j$). Portanto: + +$$dp[i][j] = \max_{i \le k \le j} \big( dp[i][k-1] + B[i-1] \cdot B[k] \cdot B[j+1] + dp[k+1][j] \big)$$ + +\subsection{Casos Base} + +Os casos base da nossa recursão (ou inicialização da matriz) ocorrem para intervalos vazios, ou seja, quando o índice de início ultrapassa o índice de fim ($i > j$). Nesses casos, como não há balões para estourar, a energia liberada é naturalmante nula: + +$$dp[i][j] = 0 \quad \text{para todo } i > j$$ + +Como a implementação iterativa inicializa a matriz completa com zeros, essa condição já é suprida por padrão. + +\subsection{Recuperação da Decomposição (Ordem das explosões)} + +Para além da energia máxima $dp[1][N]$, frequentemente queremos também a sequência de explosões que atinge esse valor. Para isso, mantemos uma matriz auxiliar \texttt{cut[i][j]} durante a computação, que armazena o índice $k$ responsável pelo maior ganho em $dp[i][j]$. + +Após preencher $dp$ e \texttt{cut}, criamos uma função recursiva para reconstruir a resposta. Ao chamarmos a função para o intervalo $[1, N]$, descobrimos o pivô $k = \texttt{cut}[1][N]$. Sabemos que $k$ é o \textit{último} balão estourado. Em seguida, chamamos recursivamente para os subintervalos $[1, k-1]$ e $[k+1, N]$. Ao empilharmos esses balões, obtemos a sequência cronológica invertida; basta inverter a lista no final para obtermos a sequência exata das explosões.\end{document} diff --git a/estouro/estouro.pdf b/estouro/estouro.pdf index 0202cdb..94e46b1 100644 Binary files a/estouro/estouro.pdf and b/estouro/estouro.pdf differ diff --git a/estouro/statement/tutorial.tex b/estouro/statement/tutorial.tex index e69de29..ca58e03 100644 --- a/estouro/statement/tutorial.tex +++ b/estouro/statement/tutorial.tex @@ -0,0 +1,39 @@ +\section{Solução do Problema} + +O problema de maximizar a energia ao estourar balões pode ser resolvido de forma eficiente por meio de \textbf{programação dinâmica em intervalos}. A grande sacada para modelar este problema é pensar no processo de trás para frente: em vez de tentar adivinhar qual balão estourar primeiro, o que muda constantemente os vizinhos dos balões restantes, escolhemos qual será o \textbf{último balão} a ser estourado em um determinado subintervalo. + +Para lidar com as bordas da fileira sem precisar de múltiplos \texttt{if}s, adicionamos balões virtuais com valor $1$ nas extremidades. + +\subsection{Definição do Subproblema} + +Seja a nossa fileira de balões original de tamanho $N$. Criamos um novo vetor $B$ de tamanho $N+2$, onde $B[0] = 1$, $B[N+1] = 1$, e as posições de $1$ a $N$ recebem os valores fornecidos. + +Definimos o nosso estado da programação dinâmica como: + +$$dp[i][j] = \text{a quantidade máxima de energia obtida ao estourar todos os balões no intervalo } [i, j].$$ + +Assim, $dp[1][N]$ representará a nossa resposta ótima, correspondente ao intervalo que engloba todos os balões reais. + +\subsection{Função de Transição} + +Para calcular $dp[i][j]$, vamos iterar por um pivô $k$ (com $i \le k \le j$) que representa o \textbf{último balão} a ser estourado dentro desse subintervalo. + +Como $k$ é o último a sobreviver entre $i$ e $j$, todos os outros balões internos já foram estourados. Consequentemente, no exato momento da explosão de $k$, seus vizinhos diretos garantidamente serão $B[i-1]$ e $B[j+1]$. A energia liberada por esse estopim final será $B[i-1] \times B[k] \times B[j+1]$. + +O valor total do intervalo será a soma da energia desse balão $k$ com as energias máximas dos subproblemas que o antecederam na ordem cronológica de explosão: o intervalo à esquerda ($i$ até $k-1$) e o intervalo à direita ($k+1$ até $j$). Portanto: + +$$dp[i][j] = \max_{i \le k \le j} \big( dp[i][k-1] + B[i-1] \cdot B[k] \cdot B[j+1] + dp[k+1][j] \big)$$ + +\subsection{Casos Base} + +Os casos base da nossa recursão (ou inicialização da matriz) ocorrem para intervalos vazios, ou seja, quando o índice de início ultrapassa o índice de fim ($i > j$). Nesses casos, como não há balões para estourar, a energia liberada é naturalmante nula: + +$$dp[i][j] = 0 \quad \text{para todo } i > j$$ + +Como a implementação iterativa inicializa a matriz completa com zeros, essa condição já é suprida por padrão. + +\subsection{Recuperação da Decomposição (Ordem das explosões)} + +Para além da energia máxima $dp[1][N]$, frequentemente queremos também a sequência de explosões que atinge esse valor. Para isso, mantemos uma matriz auxiliar \texttt{cut[i][j]} durante a computação, que armazena o índice $k$ responsável pelo maior ganho em $dp[i][j]$. + +Após preencher $dp$ e \texttt{cut}, criamos uma função recursiva para reconstruir a resposta. Ao chamarmos a função para o intervalo $[1, N]$, descobrimos o pivô $k = \texttt{cut}[1][N]$. Sabemos que $k$ é o \textit{último} balão estourado. Em seguida, chamamos recursivamente para os subintervalos $[1, k-1]$ e $[k+1, N]$. Ao empilharmos esses balões, obtemos a sequência cronológica invertida; basta inverter a lista no final para obtermos a sequência exata das explosões. \ No newline at end of file diff --git a/flowers/flowers-tutorial.pdf b/flowers/flowers-tutorial.pdf index ffbfc9c..a9bf7d8 100644 Binary files a/flowers/flowers-tutorial.pdf and b/flowers/flowers-tutorial.pdf differ diff --git a/flowers/flowers.pdf b/flowers/flowers.pdf index 2eaadf4..25da707 100644 Binary files a/flowers/flowers.pdf and b/flowers/flowers.pdf differ diff --git a/inclusao-de-subintervalos/inclusao-de-subintervalos.pdf b/inclusao-de-subintervalos/inclusao-de-subintervalos.pdf index 91b4ee5..ff42c5f 100644 Binary files a/inclusao-de-subintervalos/inclusao-de-subintervalos.pdf and b/inclusao-de-subintervalos/inclusao-de-subintervalos.pdf differ diff --git a/knapsack-zero-one/knapsack-zero-one-tutorial.pdf b/knapsack-zero-one/knapsack-zero-one-tutorial.pdf index aca538b..eb61707 100644 Binary files a/knapsack-zero-one/knapsack-zero-one-tutorial.pdf and b/knapsack-zero-one/knapsack-zero-one-tutorial.pdf differ diff --git a/knapsack-zero-one/knapsack-zero-one.pdf b/knapsack-zero-one/knapsack-zero-one.pdf index f8f2564..72a3838 100644 Binary files a/knapsack-zero-one/knapsack-zero-one.pdf and b/knapsack-zero-one/knapsack-zero-one.pdf differ diff --git a/knight-moves/knight-moves-tutorial.pdf b/knight-moves/knight-moves-tutorial.pdf index 479e25c..92c1fbd 100644 Binary files a/knight-moves/knight-moves-tutorial.pdf and b/knight-moves/knight-moves-tutorial.pdf differ diff --git a/knight-moves/knight-moves.pdf b/knight-moves/knight-moves.pdf index 0ea5a16..3965cfa 100644 Binary files a/knight-moves/knight-moves.pdf and b/knight-moves/knight-moves.pdf differ diff --git a/longest-common-subsequence/longest-common-subsequence-tutorial.pdf b/longest-common-subsequence/longest-common-subsequence-tutorial.pdf index cd6ae76..f9f314e 100644 Binary files a/longest-common-subsequence/longest-common-subsequence-tutorial.pdf and b/longest-common-subsequence/longest-common-subsequence-tutorial.pdf differ diff --git a/longest-common-subsequence/longest-common-subsequence.pdf b/longest-common-subsequence/longest-common-subsequence.pdf index 2b81977..7b61581 100644 Binary files a/longest-common-subsequence/longest-common-subsequence.pdf and b/longest-common-subsequence/longest-common-subsequence.pdf differ diff --git a/longest-increasing-subsequence-II/longest-increasing-subsequence-II-tutorial.pdf b/longest-increasing-subsequence-II/longest-increasing-subsequence-II-tutorial.pdf index 127557a..dbc7101 100644 Binary files a/longest-increasing-subsequence-II/longest-increasing-subsequence-II-tutorial.pdf and b/longest-increasing-subsequence-II/longest-increasing-subsequence-II-tutorial.pdf differ diff --git a/longest-increasing-subsequence-II/longest-increasing-subsequence-II.pdf b/longest-increasing-subsequence-II/longest-increasing-subsequence-II.pdf index 2a1c7a8..fd153fb 100644 Binary files a/longest-increasing-subsequence-II/longest-increasing-subsequence-II.pdf and b/longest-increasing-subsequence-II/longest-increasing-subsequence-II.pdf differ diff --git a/longest-increasing-subsequence/longest-increasing-subsequence-tutorial.pdf b/longest-increasing-subsequence/longest-increasing-subsequence-tutorial.pdf index c08a258..6bea9e1 100644 Binary files a/longest-increasing-subsequence/longest-increasing-subsequence-tutorial.pdf and b/longest-increasing-subsequence/longest-increasing-subsequence-tutorial.pdf differ diff --git a/longest-increasing-subsequence/longest-increasing-subsequence.pdf b/longest-increasing-subsequence/longest-increasing-subsequence.pdf index a3d34f7..1400c04 100644 Binary files a/longest-increasing-subsequence/longest-increasing-subsequence.pdf and b/longest-increasing-subsequence/longest-increasing-subsequence.pdf differ diff --git a/longest-palindromic-subsequence/longest-palindromic-subsequence-tutorial.pdf b/longest-palindromic-subsequence/longest-palindromic-subsequence-tutorial.pdf index 25d377a..56b9364 100644 Binary files a/longest-palindromic-subsequence/longest-palindromic-subsequence-tutorial.pdf and b/longest-palindromic-subsequence/longest-palindromic-subsequence-tutorial.pdf differ diff --git a/longest-palindromic-subsequence/longest-palindromic-subsequence.pdf b/longest-palindromic-subsequence/longest-palindromic-subsequence.pdf index b9b9f37..10bbc5a 100644 Binary files a/longest-palindromic-subsequence/longest-palindromic-subsequence.pdf and b/longest-palindromic-subsequence/longest-palindromic-subsequence.pdf differ diff --git a/maximum-subarray-sum/maximum-subarray-sum-tutorial.pdf b/maximum-subarray-sum/maximum-subarray-sum-tutorial.pdf index 74c8748..e93f904 100644 Binary files a/maximum-subarray-sum/maximum-subarray-sum-tutorial.pdf and b/maximum-subarray-sum/maximum-subarray-sum-tutorial.pdf differ diff --git a/maximum-subarray-sum/maximum-subarray-sum.pdf b/maximum-subarray-sum/maximum-subarray-sum.pdf index 3af032c..94db846 100644 Binary files a/maximum-subarray-sum/maximum-subarray-sum.pdf and b/maximum-subarray-sum/maximum-subarray-sum.pdf differ diff --git a/min-sum-path-2d/min-sum-path-2d-tutorial.pdf b/min-sum-path-2d/min-sum-path-2d-tutorial.pdf index 40a779d..83820e0 100644 Binary files a/min-sum-path-2d/min-sum-path-2d-tutorial.pdf and b/min-sum-path-2d/min-sum-path-2d-tutorial.pdf differ diff --git a/min-sum-path-2d/min-sum-path-2d.pdf b/min-sum-path-2d/min-sum-path-2d.pdf index 25c8456..a3c2629 100644 Binary files a/min-sum-path-2d/min-sum-path-2d.pdf and b/min-sum-path-2d/min-sum-path-2d.pdf differ diff --git a/min-sum-path-2d/min-sum-path-2d.tex b/min-sum-path-2d/min-sum-path-2d.tex index 8d8dcf8..336d92d 100644 --- a/min-sum-path-2d/min-sum-path-2d.tex +++ b/min-sum-path-2d/min-sum-path-2d.tex @@ -33,61 +33,5 @@ Imprima um único inteiro representando o menor custo total para ir da célula s -\Notas - -\begin{itemize} - - \item \textbf{Exemplo 1} - \[ - n = 1,\quad m = 1,\quad - C = - \begin{bmatrix} - 5 - \end{bmatrix} - \] - Como há apenas uma célula, o caminho consiste apenas nela. - O menor custo é: - \[ - 5 - \] - - \item \textbf{Exemplo 2} - \[ - n = 2,\quad m = 2,\quad - C = - \begin{bmatrix} - 1 & 3 \\ - 2 & 4 - \end{bmatrix} - \] - Os caminhos possíveis são: - \begin{itemize} - \item Direita → Baixo: \( 1 + 3 + 4 = 8 \) - \item Baixo → Direita: \( 1 + 2 + 4 = 7 \) - \end{itemize} - Logo, o menor custo é: - \[ - 7 - \] - - \item \textbf{Exemplo 3} - \[ - n = 3,\quad m = 3,\quad - C = - \begin{bmatrix} - 1 & 2 & 3 \\ - 4 & 5 & 6 \\ - 7 & 8 & 9 - \end{bmatrix} - \] - O movimento sempre aumenta o custo, portanto o caminho ótimo é seguir pela primeira linha e depois descer: - \[ - 1 + 2 + 3 + 6 + 9 = 21 - \] - Assim, o menor custo para ir de \((0,0)\) a \((2,2)\) é: - \[ - 21 - \] - -\end{itemize}\end{ProblemaAutor} +\end{ProblemaAutor} \end{document} diff --git a/o-problema-dos-pacotes-viajantes/o-problema-dos-pacotes-viajantes.pdf b/o-problema-dos-pacotes-viajantes/o-problema-dos-pacotes-viajantes.pdf index af5988b..a7748d6 100644 Binary files a/o-problema-dos-pacotes-viajantes/o-problema-dos-pacotes-viajantes.pdf and b/o-problema-dos-pacotes-viajantes/o-problema-dos-pacotes-viajantes.pdf differ diff --git a/o-problema-dos-pacotes-viajantes/o-problema-dos-pacotes-viajantes.tex b/o-problema-dos-pacotes-viajantes/o-problema-dos-pacotes-viajantes.tex index 277eee5..506ba95 100644 --- a/o-problema-dos-pacotes-viajantes/o-problema-dos-pacotes-viajantes.tex +++ b/o-problema-dos-pacotes-viajantes/o-problema-dos-pacotes-viajantes.tex @@ -13,7 +13,7 @@ Cada estação possui duas plataformas de operação: \item \textbf{Plataforma B}: mantém uma fila de encomendas que ainda precisam ser enviadas para outras estações. \end{itemize} -O carrinho possui uma pilha interna com capacidade limitada, utilizada para armazenar as encomendas em trânsito. Como se trata de uma pilha, apenas a encomenda localizada no topo pode ser retirada. Ao chegar a uma estação, o carrinho inicia o processo de \textbf{descarregamento}: ele retira do topo da pilha todas as encomendas destinadas àquela estação, uma a uma, depositando-as na plataforma A. Se encontrar uma encomenda destinada a outra estação, ele tenta colocá-la na fila da plataforma B, caso haja espaço disponível. Se a fila estiver cheia, o descarregamento é interrompido. +O carrinho possui uma pilha interna com capacidade limitada, utilizada para armazenar as encomendas em trânsito. Como se trata de uma pilha, apenas a encomenda localizada no topo pode ser retirada. Ao chegar a uma estação, o carrinho inicia o processo de \textbf{descarregamento}, retirando do topo da pilha as encomendas uma a uma. Cada encomenda é depositada na plataforma A da estação caso seu destino corresponda à estação atual; caso contrário, o carrinho tenta colocá-la na fila da plataforma B, desde que haja espaço disponível. Se a fila estiver cheia e o destino da encomenda no topo da pilha não corresponder à estação atual, o processo de descarregamento é interrompido. Em seguida, ocorre o \textbf{carregamento}: o carrinho pega, na ordem da fila da plataforma B, as encomendas que aguardam envio e as adiciona ao topo da pilha, até que esta atinja sua capacidade máxima ou a fila fique vazia. diff --git a/rod-cutting/rod-cutting-tutorial.pdf b/rod-cutting/rod-cutting-tutorial.pdf index f94014f..10d1cb6 100644 Binary files a/rod-cutting/rod-cutting-tutorial.pdf and b/rod-cutting/rod-cutting-tutorial.pdf differ diff --git a/rod-cutting/rod-cutting.pdf b/rod-cutting/rod-cutting.pdf index c0c8502..7395166 100644 Binary files a/rod-cutting/rod-cutting.pdf and b/rod-cutting/rod-cutting.pdf differ diff --git a/sliding-puzzle/sliding-puzzle-tutorial.pdf b/sliding-puzzle/sliding-puzzle-tutorial.pdf index 57ce895..a61b0e4 100644 Binary files a/sliding-puzzle/sliding-puzzle-tutorial.pdf and b/sliding-puzzle/sliding-puzzle-tutorial.pdf differ diff --git a/sliding-puzzle/sliding-puzzle.pdf b/sliding-puzzle/sliding-puzzle.pdf index f244cc3..e445ff6 100644 Binary files a/sliding-puzzle/sliding-puzzle.pdf and b/sliding-puzzle/sliding-puzzle.pdf differ diff --git a/subset-sum/subset-sum.pdf b/subset-sum/subset-sum.pdf index 22f8db7..5c45a4c 100644 Binary files a/subset-sum/subset-sum.pdf and b/subset-sum/subset-sum.pdf differ diff --git a/unconventional-pairs/unconventional-pairs-tutorial.pdf b/unconventional-pairs/unconventional-pairs-tutorial.pdf index 8a88637..d262e52 100644 Binary files a/unconventional-pairs/unconventional-pairs-tutorial.pdf and b/unconventional-pairs/unconventional-pairs-tutorial.pdf differ diff --git a/unconventional-pairs/unconventional-pairs.pdf b/unconventional-pairs/unconventional-pairs.pdf index 4e0e3d7..3af71fc 100644 Binary files a/unconventional-pairs/unconventional-pairs.pdf and b/unconventional-pairs/unconventional-pairs.pdf differ diff --git a/unconventional-pairs/unconventional-pairs.tex b/unconventional-pairs/unconventional-pairs.tex index 7b46884..d393d0e 100644 --- a/unconventional-pairs/unconventional-pairs.tex +++ b/unconventional-pairs/unconventional-pairs.tex @@ -13,7 +13,7 @@ Determine o menor valor possível para essa diferença máxima. \Entrada -Cada teste consiste em vários casos de teste. A primeira linha contém um único inteiro \( t \) (\( 1 \le t \le 10^4 \)), indicando o número de casos de teste. +A entrada consiste em vários casos de teste. A primeira linha contém um único inteiro \( t \) (\( 1 \le t \le 10^4 \)), indicando o número de casos de teste. Para cada caso de teste: \begin{itemize} diff --git a/vacations/vacations.pdf b/vacations/vacations.pdf index 56225b1..2698daa 100644 Binary files a/vacations/vacations.pdf and b/vacations/vacations.pdf differ