Compare commits
15 Commits
189f75019b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 10ac9a7b32 | |||
| bd94e27fad | |||
| 3cbc40eb77 | |||
| edcd2211b5 | |||
| d931bb6422 | |||
| 4d583f8d8c | |||
| 8785966987 | |||
| 33d87c5809 | |||
| 3ec1280357 | |||
| cc687b9471 | |||
| 6bc674b1d4 | |||
| c58f6e4aeb | |||
| c85571e157 | |||
| 7e9caaea6e | |||
| 32713bd845 |
@@ -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)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Binary file not shown.
@@ -7,7 +7,7 @@
|
||||
\usepackage{hyperref}
|
||||
|
||||
\title{ Tutorial: Análise de Dados}
|
||||
\author{Leetcode 1223}
|
||||
\author{Arthur Andrade D'Olival}
|
||||
\date{}
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
Binary file not shown.
@@ -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}\\
|
||||
|
||||
Binary file not shown.
@@ -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
|
||||
|
||||
Binary file not shown.
@@ -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}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
58
analise-de-dados/src/test.py
Normal file
58
analise-de-dados/src/test.py
Normal 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()
|
||||
@@ -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}.
|
||||
Binary file not shown.
@@ -7,7 +7,6 @@
|
||||
\usepackage{hyperref}
|
||||
\usepackage{graphicx}
|
||||
\input{statement/preamble.tex}
|
||||
|
||||
\title{ Tutorial: Caching Offline}
|
||||
\author{}
|
||||
\date{}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
|
||||
Binary file not shown.
@@ -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.
@@ -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.
@@ -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}
|
||||
|
||||
@@ -1 +1 @@
|
||||
1298777728820984005
|
||||
782204094
|
||||
|
||||
@@ -1 +1 @@
|
||||
1836311903
|
||||
836311896
|
||||
|
||||
@@ -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": [],
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
|
||||
16
decode-ways/src/alternative-ac2.py
Normal file
16
decode-ways/src/alternative-ac2.py
Normal 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)
|
||||
@@ -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);
|
||||
|
||||
@@ -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}.
|
||||
@@ -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\)}.
|
||||
Binary file not shown.
@@ -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
|
||||
|
||||
Binary file not shown.
@@ -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}
|
||||
|
||||
Binary file not shown.
@@ -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.
@@ -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}
|
||||
|
||||
@@ -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": [],
|
||||
|
||||
36
delete-and-earn/src/saad.py
Normal file
36
delete-and-earn/src/saad.py
Normal 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()
|
||||
@@ -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}.
|
||||
Binary file not shown.
@@ -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
|
||||
|
||||
Binary file not shown.
@@ -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.
|
||||
|
||||
|
||||
Binary file not shown.
@@ -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.
@@ -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.
|
||||
|
||||
|
||||
@@ -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
35
edit-distance/src/saad.py
Normal 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()
|
||||
Binary file not shown.
@@ -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.
@@ -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.
@@ -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.
@@ -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}
|
||||
|
||||
@@ -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": [],
|
||||
|
||||
14
estouro/src/alternative-ac.py
Normal file
14
estouro/src/alternative-ac.py
Normal 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])
|
||||
@@ -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}.
|
||||
Binary file not shown.
@@ -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.
@@ -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.
@@ -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.
@@ -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
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
1497 202
|
||||
97 202
|
||||
|
||||
@@ -1 +1 @@
|
||||
7455 217
|
||||
455 217
|
||||
|
||||
@@ -1 +1 @@
|
||||
3590 343
|
||||
590 343
|
||||
|
||||
@@ -1 +1 @@
|
||||
4427 220
|
||||
427 220
|
||||
|
||||
@@ -1 +1 @@
|
||||
1342 584
|
||||
342 584
|
||||
|
||||
@@ -1 +1 @@
|
||||
4239 496
|
||||
239 496
|
||||
|
||||
@@ -1 +1 @@
|
||||
5875 601
|
||||
875 601
|
||||
|
||||
@@ -1 +1 @@
|
||||
10000 1
|
||||
1000 1
|
||||
|
||||
@@ -1 +1 @@
|
||||
10000 1000
|
||||
1000 1000
|
||||
|
||||
@@ -1 +1 @@
|
||||
1775 325
|
||||
175 325
|
||||
|
||||
@@ -1 +1 @@
|
||||
1982 784
|
||||
182 784
|
||||
|
||||
@@ -1 +1 @@
|
||||
417 156
|
||||
17 156
|
||||
|
||||
@@ -1 +1 @@
|
||||
1932 902
|
||||
132 902
|
||||
|
||||
@@ -1 +1 @@
|
||||
1728 537
|
||||
128 537
|
||||
|
||||
@@ -1 +1 @@
|
||||
1857 739
|
||||
57 739
|
||||
|
||||
@@ -1 +1 @@
|
||||
918 211
|
||||
118 211
|
||||
|
||||
@@ -1 +1 @@
|
||||
1679 506
|
||||
79 506
|
||||
|
||||
@@ -1 +1 @@
|
||||
1340 568
|
||||
140 568
|
||||
|
||||
@@ -1 +1 @@
|
||||
1868 16
|
||||
68 16
|
||||
|
||||
@@ -1 +1 @@
|
||||
1940 263
|
||||
140 263
|
||||
|
||||
@@ -1 +1 @@
|
||||
593 449
|
||||
193 449
|
||||
|
||||
@@ -1 +1 @@
|
||||
991 310
|
||||
191 310
|
||||
|
||||
@@ -1 +1 @@
|
||||
1355 68
|
||||
155 68
|
||||
|
||||
@@ -1 +1 @@
|
||||
1431 580
|
||||
31 580
|
||||
|
||||
@@ -1 +1 @@
|
||||
1757 218
|
||||
157 218
|
||||
|
||||
@@ -1 +1 @@
|
||||
934 328
|
||||
134 328
|
||||
|
||||
@@ -1 +1 @@
|
||||
1676 355
|
||||
76 355
|
||||
|
||||
@@ -1 +1 @@
|
||||
221 80
|
||||
21 80
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user