Compare commits

...

15 Commits

1046 changed files with 2900371 additions and 3716 deletions

View File

@@ -50,9 +50,13 @@ Repositório com a formatação de problemas que exploram variadas técnicas de
## Graph
- [Conversor Fonético Genérico](./conversor-fonetico-generico)
- [Gatinhos](./gatinhos)
- [Knight Moves](./knight-moves)
- [Sliding Puzzle](./sliding-puzzle)
- [Pique Pega](./pique-pega/)
- [Lazy Jumping Frog](./ra-preguicosa/)
- [Rede Anel Estelar](./rede-anel-estelar/)
- [SMS](./sms)
---

View File

@@ -7,7 +7,7 @@
\usepackage{hyperref}
\title{ Tutorial: Análise de Dados}
\author{Leetcode 1223}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Análise de Dados}{1}{256}{Leetcode 1223}
\begin{ProblemaAutor}{}{Análise de Dados}{1}{256}{Arthur Andrade D'Olival}
É o seu primeiro dia no \textbf{Departamento de Controle de Qualidade}.
@@ -33,6 +33,10 @@ Em seguida, são dados seis inteiros \(d_1, d_2, d_3, d_4, d_5, d_6\), cada um r
A saída consiste em um único inteiro representando o número total de sequências válidas de lançamentos, considerando o resultado módulo \(10^9 + 7\).
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/dice-roll-simulation/}{Leetcode 1223}.
\ExemploEntrada
\begin{Exemplo}
\texttt{2} & \texttt{34}\\

View File

@@ -7,9 +7,8 @@
\usepackage{hyperref}
\usepackage{graphicx}
\input{statement/preamble.tex}
\title{ Tutorial: Análise de Dados}
\author{Leetcode 1223}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Análise de Dados}{1}{256}{Leetcode 1223}
\begin{ProblemaAutor}{}{Análise de Dados}{1}{256}{Arthur Andrade D'Olival}
É o seu primeiro dia no \textbf{Departamento de Controle de Qualidade}.
@@ -33,6 +33,10 @@ Em seguida, são dados seis inteiros \(d_1, d_2, d_3, d_4, d_5, d_6\), cada um r
A saída consiste em um único inteiro representando o número total de sequências válidas de lançamentos, considerando o resultado módulo \(10^9 + 7\).
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/dice-roll-simulation/}{Leetcode 1223}.
\ExemploEntrada
\begin{Exemplo}

View File

@@ -22,7 +22,7 @@
}
},
"author": {
"name": "Leetcode 1223",
"name": "Arthur Andrade D'Olival",
"affiliation": "",
"country": "",
"email": ""
@@ -43,7 +43,7 @@
},
"solutions": {
"main-ac": "ac.cpp",
"alternative-ac": [],
"alternative-ac": ["test.py"],
"wrong-answer": [],
"time-limit": [],
"time-limit-or-ac": [],
@@ -61,4 +61,4 @@
"maximum_memory_mb": 512,
"maximum_output_size_kb": 24096
}
}
}

View File

@@ -0,0 +1,58 @@
import sys
MOD = 1000000007
n = 0
d = []
def read_input():
global n
global d
n = int(input())
d = list(map(int, input().split()))
def compute(dp, i, j, k):
global d
if dp[i][j][k] != -1:
return dp[i][j][k]
if i == 1:
return 1 if k == 1 else 0
dp[i][j][k] = 0
if k>1:
dp[i][j][k] = compute(dp, i-1, j, k-1) % MOD
dp[i][j][k] %= MOD
else:
for x in range(6):
if x == j:
continue
for l in range(1, d[x]+1):
dp[i][j][k] += compute(dp, i-1, x, l)
dp[i][j][k] %= MOD
return dp[i][j][k]
def solve():
global n
global d
dp = [[[-1 for _ in range(d[j]+1)] for j in range(6)] for _ in range(n+1)]
ans = 0
for j in range(6):
for k in range(1,min(d[j]+1,n+1)):
ans = (ans + compute(dp, n, j, k)) % MOD
print(ans)
def main():
sys.setrecursionlimit(10000)
read_input()
solve()
if __name__ == "__main__":
main()

View File

@@ -1 +1,5 @@
A saída consiste em um único inteiro representando o número total de sequências válidas de lançamentos, considerando o resultado módulo \(10^9 + 7\).
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/dice-roll-simulation/}{Leetcode 1223}.

View File

@@ -7,7 +7,6 @@
\usepackage{hyperref}
\usepackage{graphicx}
\input{statement/preamble.tex}
\title{ Tutorial: Caching Offline}
\author{}
\date{}

View File

@@ -7,9 +7,8 @@
\usepackage{hyperref}
\usepackage{graphicx}
\input{statement/preamble.tex}
\title{ Tutorial: Decodificando Mensagens}
\author{Leetcode 91}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Decodificando Mensagens}{1}{256}{Leetcode 91}
\begin{ProblemaAutor}{}{Decodificando Mensagens}{1}{256}{Arthur Andrade D'Olival}
O problema consiste em determinar o número de maneiras possíveis de decodificar uma sequência numérica, onde cada número ou par de números representa uma letra do alfabeto latino.
A correspondência segue a regra \( 1 \rightarrow A, 2 \rightarrow B, \ldots, 26 \rightarrow Z \).
@@ -18,6 +18,8 @@ A segunda linha contém uma sequência de digitos de \( s \) de comprimento \( n
A saída deve conter um único inteiro, representando o número total de maneiras possíveis de decodificar a sequência numérica \( s \) de acordo com o mapeamento \( 1 \rightarrow A, 2 \rightarrow B, \ldots, 26 \rightarrow Z \).
Como este número pode ser extremamente grande, sua resposta deve ser calculada e impressa \textbf{módulo \(10^9 + 7\)}.
\ExemploEntrada
\begin{Exemplo}
@@ -35,5 +37,9 @@ A saída deve conter um único inteiro, representando o número total de maneira
Para a sequência \( s = "12" \), existem duas decodificações possíveis: "AB" (1, 2) e "L" (12).
Para a sequência \( s = "226" \), há três decodificações possíveis: "BZ" (2, 26), "VF" (22, 6) e "BBF" (2, 2, 6).
Para a sequência \( s = "06" \), não há nenhuma forma válida de decodificação.\end{ProblemaAutor}
Para a sequência \( s = "06" \), não há nenhuma forma válida de decodificação.
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/decode-ways/}{Leetcode 91}.\end{ProblemaAutor}
\end{document}

Binary file not shown.

View File

@@ -7,7 +7,7 @@
\usepackage{hyperref}
\title{ Tutorial: Decodificando Mensagens}
\author{Leetcode 91}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

Binary file not shown.

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Decodificando Mensagens}{1}{256}{Leetcode 91}
\begin{ProblemaAutor}{}{Decodificando Mensagens}{1}{256}{Arthur Andrade D'Olival}
O problema consiste em determinar o número de maneiras possíveis de decodificar uma sequência numérica, onde cada número ou par de números representa uma letra do alfabeto latino.
A correspondência segue a regra \( 1 \rightarrow A, 2 \rightarrow B, \ldots, 26 \rightarrow Z \).
@@ -18,6 +18,8 @@ A segunda linha contém uma sequência de digitos de \( s \) de comprimento \( n
A saída deve conter um único inteiro, representando o número total de maneiras possíveis de decodificar a sequência numérica \( s \) de acordo com o mapeamento \( 1 \rightarrow A, 2 \rightarrow B, \ldots, 26 \rightarrow Z \).
Como este número pode ser extremamente grande, sua resposta deve ser calculada e impressa \textbf{módulo \(10^9 + 7\)}.
\ExemploEntrada
\begin{Exemplo}
\texttt{2} & \texttt{2}\\
@@ -34,5 +36,9 @@ A saída deve conter um único inteiro, representando o número total de maneira
Para a sequência \( s = "12" \), existem duas decodificações possíveis: "AB" (1, 2) e "L" (12).
Para a sequência \( s = "226" \), há três decodificações possíveis: "BZ" (2, 26), "VF" (22, 6) e "BBF" (2, 2, 6).
Para a sequência \( s = "06" \), não há nenhuma forma válida de decodificação.\end{ProblemaAutor}
Para a sequência \( s = "06" \), não há nenhuma forma válida de decodificação.
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/decode-ways/}{Leetcode 91}.\end{ProblemaAutor}
\end{document}

View File

@@ -1 +1 @@
1298777728820984005
782204094

View File

@@ -1 +1 @@
1836311903
836311896

View File

@@ -22,7 +22,7 @@
}
},
"author": {
"name": "Leetcode 91",
"name": "Arthur Andrade D'Olival",
"affiliation": "",
"country": "",
"email": ""
@@ -43,7 +43,7 @@
},
"solutions": {
"main-ac": "ac.cpp",
"alternative-ac": ["alternative_ac.cpp"],
"alternative-ac": ["alternative_ac.cpp", "alternative-ac2.py"],
"wrong-answer": [],
"time-limit": ["TLE.cpp"],
"time-limit-or-ac": [],

View File

@@ -3,7 +3,9 @@
typedef long long ll;
using namespace std;
int ways(string &s, int n, int idx = 0)
const int MOD = 1e9 + 7;
ll ways(string &s, int n, int idx = 0)
{
if (idx > n)
return 1;
@@ -14,11 +16,13 @@ int ways(string &s, int n, int idx = 0)
if (idx + 1 < n)
{
int num = stoi(s.substr(idx, 2));
if (num >= 10 && num <= 26)
if (num >= 10 && num <= 26){
count += ways(s, n, idx + 2);
count %= MOD;
}
}
return count;
return count % MOD;
}
vector<bool> used;

View File

@@ -3,6 +3,8 @@
typedef long long ll;
using namespace std;
const int MOD = 1e9 + 7;
ll numDecodings(string s)
{
if (s[0] == '0')
@@ -36,15 +38,17 @@ ll numDecodings(string s)
if (current != '0')
{
dp[i][0] = dp[i - 1][0] + dp[i - 1][1];
dp[i][0] %= MOD;
}
int code = stoi(aux);
if (10 <= code && code <= 26)
{
dp[i][1] = dp[i - 2][0] + dp[i - 2][1];
dp[i][1] %= MOD;
}
}
return dp[N][0] + dp[N][1];
return (dp[N][0] + dp[N][1]) % MOD;
}
int main()

View File

@@ -0,0 +1,16 @@
n = int(input())
s = input().strip()
dp = [0] * (n + 1)
dp[0] = 1
for i in range(1, n + 1):
if s[i - 1] != '0':
dp[i] += dp[i - 1]
if i > 1:
two_digit = int(s[i - 2:i])
if 10 <= two_digit <= 26:
dp[i] += dp[i - 2]
print(dp[n] % 1000000007)

View File

@@ -3,6 +3,8 @@
typedef long long ll;
using namespace std;
const int MOD = 1e9 + 7;
ll numDecodings(string s)
{
if (s[0] == '0')
@@ -20,12 +22,14 @@ ll numDecodings(string s)
if (current != '0')
{
next = dp2;
next %= MOD;
}
int code = stoi(aux);
if (10 <= code && code <= 26)
{
next += dp1;
next %= MOD;
}
swap(dp1, dp2);
swap(dp2, next);

View File

@@ -1,3 +1,7 @@
Para a sequência \( s = "12" \), existem duas decodificações possíveis: "AB" (1, 2) e "L" (12).
Para a sequência \( s = "226" \), há três decodificações possíveis: "BZ" (2, 26), "VF" (22, 6) e "BBF" (2, 2, 6).
Para a sequência \( s = "06" \), não há nenhuma forma válida de decodificação.
Para a sequência \( s = "06" \), não há nenhuma forma válida de decodificação.
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/decode-ways/}{Leetcode 91}.

View File

@@ -1 +1,3 @@
A saída deve conter um único inteiro, representando o número total de maneiras possíveis de decodificar a sequência numérica \( s \) de acordo com o mapeamento \( 1 \rightarrow A, 2 \rightarrow B, \ldots, 26 \rightarrow Z \).
Como este número pode ser extremamente grande, sua resposta deve ser calculada e impressa \textbf{módulo \(10^9 + 7\)}.

View File

@@ -7,9 +7,8 @@
\usepackage{hyperref}
\usepackage{graphicx}
\input{statement/preamble.tex}
\title{ Tutorial: Deletar e Ganhar}
\author{Leetcode 740}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Deletar e Ganhar}{1}{256}{Leetcode 740}
\begin{ProblemaAutor}{}{Deletar e Ganhar}{1}{256}{Arthur Andrade D'Olival}
O problema consiste em determinar a pontuação máxima que pode ser obtida ao realizar uma série de operações sobre uma sequência de números inteiros.
Em cada operação, é possível escolher um número \( x \) da sequência, somar \( x \) pontos ao total e, em seguida, remover \textbf{todos} os elementos iguais a \( x - 1 \) e \( x + 1 \) da sequência.
@@ -38,5 +38,8 @@ Para o primeiro caso de teste: \( (3, 4, 5) \), a melhor escolha é remover \(
Para o segundo caso de teste: \( (2, 2, 3, 3, 3, 4) \), a melhor estratégia é escolher o número \( 3 \), que concede \( 3 \times 3 = 9 \) pontos, removendo todos os \( 2 \) e \( 4 \); o total máximo é \( 9 \).
Para o terceiro caso de teste: \( (1, 2, 3, 4, 5) \), a estratégia ótima é escolher \( 1 \), \( 3 \) e \( 5 \), obtendo \( 1 + 3 + 5 = 9 \) pontos no total.
\end{ProblemaAutor}
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/delete-and-earn/description/}{Leetcode 740}.\end{ProblemaAutor}
\end{document}

View File

@@ -7,7 +7,7 @@
\usepackage{hyperref}
\title{ Tutorial: Deletar e Ganhar}
\author{Leetcode 740}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

Binary file not shown.

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Deletar e Ganhar}{1}{256}{Leetcode 740}
\begin{ProblemaAutor}{}{Deletar e Ganhar}{1}{256}{Arthur Andrade D'Olival}
O problema consiste em determinar a pontuação máxima que pode ser obtida ao realizar uma série de operações sobre uma sequência de números inteiros.
Em cada operação, é possível escolher um número \( x \) da sequência, somar \( x \) pontos ao total e, em seguida, remover \textbf{todos} os elementos iguais a \( x - 1 \) e \( x + 1 \) da sequência.
@@ -37,5 +37,8 @@ Para o primeiro caso de teste: \( (3, 4, 5) \), a melhor escolha é remover \(
Para o segundo caso de teste: \( (2, 2, 3, 3, 3, 4) \), a melhor estratégia é escolher o número \( 3 \), que concede \( 3 \times 3 = 9 \) pontos, removendo todos os \( 2 \) e \( 4 \); o total máximo é \( 9 \).
Para o terceiro caso de teste: \( (1, 2, 3, 4, 5) \), a estratégia ótima é escolher \( 1 \), \( 3 \) e \( 5 \), obtendo \( 1 + 3 + 5 = 9 \) pontos no total.
\end{ProblemaAutor}
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/delete-and-earn/description/}{Leetcode 740}.\end{ProblemaAutor}
\end{document}

View File

@@ -22,7 +22,7 @@
}
},
"author": {
"name": "Leetcode 740",
"name": "Arthur Andrade D'Olival",
"affiliation": "",
"country": "",
"email": ""
@@ -36,14 +36,14 @@
"run_specific_solution": "",
"generate_io_only": false,
"generate_pdf_only": false,
"cpu_count": 1,
"cpu_count": 0,
"build_pdf": true,
"pdf_format": "ds",
"io_samples": 3
},
"solutions": {
"main-ac": "ac.cpp",
"alternative-ac": [],
"alternative-ac": ["saad.py"],
"wrong-answer": ["WA.cpp"],
"time-limit": ["TLE.cpp"],
"time-limit-or-ac": [],

View File

@@ -0,0 +1,36 @@
class Solver:
def __init__(self):
self.n_ = 0
self.v_ = []
self.freq_ = []
def read_input(self) -> None:
self.n_ = int(input())
self.v_ = list(map(int, input().split()))
def process_freq(self) -> None:
self.freq_ = [0] * (max(self.v_) + 1)
for i in self.v_:
self.freq_[i] += 1
def solve(self):
self.process_freq()
dp = [0] * (max(self.v_)+1)
dp[1] = self.freq_[1]
for i in range(2, len(dp)):
dp[i] = max(dp[i-1], dp[i-2] + i * self.freq_[i])
print(dp[-1])
def main():
solver = Solver()
solver.read_input()
solver.solve()
if __name__ == "__main__":
main()

View File

@@ -3,3 +3,7 @@ Para o primeiro caso de teste: \( (3, 4, 5) \), a melhor escolha é remover \(
Para o segundo caso de teste: \( (2, 2, 3, 3, 3, 4) \), a melhor estratégia é escolher o número \( 3 \), que concede \( 3 \times 3 = 9 \) pontos, removendo todos os \( 2 \) e \( 4 \); o total máximo é \( 9 \).
Para o terceiro caso de teste: \( (1, 2, 3, 4, 5) \), a estratégia ótima é escolher \( 1 \), \( 3 \) e \( 5 \), obtendo \( 1 + 3 + 5 = 9 \) pontos no total.
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/delete-and-earn/description/}{Leetcode 740}.

View File

@@ -7,9 +7,8 @@
\usepackage{hyperref}
\usepackage{graphicx}
\input{statement/preamble.tex}
\title{ Tutorial: Distância de Edição}
\author{}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Distância de Edição}{1}{256}{}
\begin{ProblemaAutor}{}{Distância de Edição}{1}{256}{Arthur Andrade D'Olival}
O problema consiste em determinar o \textbf{menor número de operações} necessárias para transformar uma string em outra.

View File

@@ -7,7 +7,7 @@
\usepackage{hyperref}
\title{ Tutorial: Distância de Edição}
\author{}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

Binary file not shown.

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Distância de Edição}{1}{256}{}
\begin{ProblemaAutor}{}{Distância de Edição}{1}{256}{Arthur Andrade D'Olival}
O problema consiste em determinar o \textbf{menor número de operações} necessárias para transformar uma string em outra.

View File

@@ -22,7 +22,7 @@
}
},
"author": {
"name": "",
"name": "Arthur Andrade D'Olival",
"affiliation": "",
"country": "",
"email": ""
@@ -43,7 +43,7 @@
},
"solutions": {
"main-ac": "ac.cpp",
"alternative-ac": [],
"alternative-ac": ["saad.py"],
"wrong-answer": [],
"time-limit": ["TLE.cpp"],
"time-limit-or-ac": [],

35
edit-distance/src/saad.py Normal file
View File

@@ -0,0 +1,35 @@
class Solver:
def __init__(self) -> None:
self.s1 = ""
self.s2 = ""
self.n = 0
self.m = 0
def read_input(self) -> None:
(self.n,self.m) = map(int, input().split())
(self.s1,self.s2) = input().split()
def solve(self) -> None:
dp: list[list[int]] = [[0] * (self.m + 1) for _ in range(self.n + 1)]
for i in range(self.n + 1):
dp[i][0] = i
for j in range(self.m + 1):
dp[0][j] = j
for i in range(1, self.n + 1):
for j in range(1, self.m + 1):
if self.s1[i - 1] == self.s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1]
else:
dp[i][j] = min(dp[i - 1][j] + 1, dp[i]
[j - 1] + 1, dp[i - 1][j - 1] + 1)
print(dp[self.n][self.m])
def main():
solver = Solver()
solver.read_input()
solver.solve()
if __name__ == "__main__":
main()

View File

@@ -7,9 +7,8 @@
\usepackage{hyperref}
\usepackage{graphicx}
\input{statement/preamble.tex}
\title{ Tutorial: Estouro}
\author{Leetcode 312}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

Binary file not shown.

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Estouro}{1}{256}{Leetcode 312}
\begin{ProblemaAutor}{}{Estouro}{1}{256}{Arthur Andrade D'Olival}
No laboratório de experimentos caóticos da \textbf{Fábrica de Balões Numéricos}, um cientista excêntrico te entrega uma fileira de balões, cada um pintado com um número inteiro positivo.
@@ -46,5 +46,9 @@ $3 \times 1 \times 5 + 3 \times 5 \times 8 + 1 \times 3 \times 8 + 1 \times 8 \t
Portanto, o total máximo de energia é $167$.
No segundo exemplo, independentemente da ordem escolhida, a energia total liberada é
$1 \times 1 \times 5 + 1 \times 5 \times 1 = 10$.\end{ProblemaAutor}
$1 \times 1 \times 5 + 1 \times 5 \times 1 = 10$.
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/burst-balloons/description/}{Leetcode 312}.\end{ProblemaAutor}
\end{document}

Binary file not shown.

View File

@@ -7,7 +7,7 @@
\usepackage{hyperref}
\title{ Tutorial: Estouro}
\author{Leetcode 312}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

Binary file not shown.

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{Estouro}{1}{256}{Leetcode 312}
\begin{ProblemaAutor}{}{Estouro}{1}{256}{Arthur Andrade D'Olival}
No laboratório de experimentos caóticos da \textbf{Fábrica de Balões Numéricos}, um cientista excêntrico te entrega uma fileira de balões, cada um pintado com um número inteiro positivo.
@@ -45,5 +45,9 @@ $3 \times 1 \times 5 + 3 \times 5 \times 8 + 1 \times 3 \times 8 + 1 \times 8 \t
Portanto, o total máximo de energia é $167$.
No segundo exemplo, independentemente da ordem escolhida, a energia total liberada é
$1 \times 1 \times 5 + 1 \times 5 \times 1 = 10$.\end{ProblemaAutor}
$1 \times 1 \times 5 + 1 \times 5 \times 1 = 10$.
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/burst-balloons/description/}{Leetcode 312}.\end{ProblemaAutor}
\end{document}

View File

@@ -22,7 +22,7 @@
}
},
"author": {
"name": "Leetcode 312",
"name": "Arthur Andrade D'Olival",
"affiliation": "",
"country": "",
"email": ""
@@ -43,7 +43,7 @@
},
"solutions": {
"main-ac": "ac.cpp",
"alternative-ac": [],
"alternative-ac": ["alternative-ac.py"],
"wrong-answer": [],
"time-limit": [],
"time-limit-or-ac": [],

View File

@@ -0,0 +1,14 @@
n = int(input())
nums = list(map(int, input().split()))
nums = [1] + nums + [1]
dp = [[0] * len(nums) for _ in range(len(nums))]
for length in range(3, len(nums) + 1):
for i in range(len(nums) - length + 1):
j = i + length - 1
for k in range(i + 1, j):
dp[i][j] = max(dp[i][j], dp[i][k] + dp[k][j] + nums[i] * nums[k] * nums[j])
print(dp[0][len(nums) - 1])

View File

@@ -3,4 +3,8 @@ $3 \times 1 \times 5 + 3 \times 5 \times 8 + 1 \times 3 \times 8 + 1 \times 8 \t
Portanto, o total máximo de energia é $167$.
No segundo exemplo, independentemente da ordem escolhida, a energia total liberada é
$1 \times 1 \times 5 + 1 \times 5 \times 1 = 10$.
$1 \times 1 \times 5 + 1 \times 5 \times 1 = 10$.
\section*{Observações}
Problema adaptado de \href{https://leetcode.com/problems/burst-balloons/description/}{Leetcode 312}.

View File

@@ -7,9 +7,8 @@
\usepackage{hyperref}
\usepackage{graphicx}
\input{statement/preamble.tex}
\title{ Tutorial: O problema das Flores}
\author{}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

Binary file not shown.

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{O problema das Flores}{1}{256}{}
\begin{ProblemaAutor}{}{O problema das Flores}{1}{256}{Arthur Andrade D'Olival}
O Jardineiro Bino é conhecido por seus canteiros de flores meticulosamente planejados. Este ano, ele decidiu criar um canteiro linear de comprimento \(n\). Para cada uma das \(n\) posições no canteiro, Bino plantará exatamente uma flor, que pode ser ou vermelha (V) ou branca (B).
@@ -13,7 +13,7 @@ Bino está planejando o jardim e quer saber quantas opções de design ele realm
\Entrada
A entrada contém dois inteiros separados por espaço, \(n\) e \(m\), onde \(n\) (\(1 \leq n \leq 10\,000\)) é o comprimento da sequência de flores e \(m\) (\(1 \leq m \leq 1\,000\)) é o número máximo permitido de flores iguais consecutivas.
A entrada contém dois inteiros separados por espaço, \(n\) e \(m\), onde \(n\) (\(1 \leq n \leq 1\,000\)) é o comprimento da sequência de flores e \(m\) (\(1 \leq m \leq 1\,000\)) é o número máximo permitido de flores iguais consecutivas.
\Saida

Binary file not shown.

View File

@@ -7,7 +7,7 @@
\usepackage{hyperref}
\title{ Tutorial: O problema das Flores}
\author{}
\author{Arthur Andrade D'Olival}
\date{}
\begin{document}
\maketitle

Binary file not shown.

View File

@@ -1,7 +1,7 @@
\documentclass{maratona}
\begin{document}
\begin{ProblemaAutor}{}{O problema das Flores}{1}{256}{}
\begin{ProblemaAutor}{}{O problema das Flores}{1}{256}{Arthur Andrade D'Olival}
O Jardineiro Bino é conhecido por seus canteiros de flores meticulosamente planejados. Este ano, ele decidiu criar um canteiro linear de comprimento \(n\). Para cada uma das \(n\) posições no canteiro, Bino plantará exatamente uma flor, que pode ser ou vermelha (V) ou branca (B).
@@ -13,7 +13,7 @@ Bino está planejando o jardim e quer saber quantas opções de design ele realm
\Entrada
A entrada contém dois inteiros separados por espaço, \(n\) e \(m\), onde \(n\) (\(1 \leq n \leq 10\,000\)) é o comprimento da sequência de flores e \(m\) (\(1 \leq m \leq 1\,000\)) é o número máximo permitido de flores iguais consecutivas.
A entrada contém dois inteiros separados por espaço, \(n\) e \(m\), onde \(n\) (\(1 \leq n \leq 1\,000\)) é o comprimento da sequência de flores e \(m\) (\(1 \leq m \leq 1\,000\)) é o número máximo permitido de flores iguais consecutivas.
\Saida

View File

@@ -1 +1 @@
1497 202
97 202

View File

@@ -1 +1 @@
7455 217
455 217

View File

@@ -1 +1 @@
3590 343
590 343

View File

@@ -1 +1 @@
4427 220
427 220

View File

@@ -1 +1 @@
1342 584
342 584

View File

@@ -1 +1 @@
4239 496
239 496

View File

@@ -1 +1 @@
5875 601
875 601

View File

@@ -1 +1 @@
10000 1
1000 1

View File

@@ -1 +1 @@
10000 1000
1000 1000

View File

@@ -1 +1 @@
1775 325
175 325

View File

@@ -1 +1 @@
1982 784
182 784

View File

@@ -1 +1 @@
417 156
17 156

View File

@@ -1 +1 @@
1932 902
132 902

View File

@@ -1 +1 @@
1728 537
128 537

View File

@@ -1 +1 @@
1857 739
57 739

View File

@@ -1 +1 @@
918 211
118 211

View File

@@ -1 +1 @@
1679 506
79 506

View File

@@ -1 +1 @@
1340 568
140 568

View File

@@ -1 +1 @@
1868 16
68 16

View File

@@ -1 +1 @@
1940 263
140 263

View File

@@ -1 +1 @@
593 449
193 449

View File

@@ -1 +1 @@
991 310
191 310

View File

@@ -1 +1 @@
1355 68
155 68

View File

@@ -1 +1 @@
1431 580
31 580

View File

@@ -1 +1 @@
1757 218
157 218

View File

@@ -1 +1 @@
934 328
134 328

View File

@@ -1 +1 @@
1676 355
76 355

View File

@@ -1 +1 @@
221 80
21 80

Some files were not shown because too many files have changed in this diff Show More