Ordenação Léxica, Caractere Único e Caminho Máximo em Estrutura de Diretórios
1. Números em Ordem Léxica
Dado um inteiro n, o objetivo é retornar os números de 1 a n organizados em ordem lexicográfica — ou seja, como se estivessem ordenados como strings. Por exemplo, para n = 13, a sequência correta é [1, 10, 11, 12, 13, 2, 3, ..., 9]. A abordagem direta com comparação de strings seria ineficiente para entradas grandes ( ...
Publicado em 9-13 15:32
Algoritmos de Correspondência de Strings: KMP Otimizado e Autômato de Aho-Corasick
Algoritmo KMP e a Otimização da Função de Falha
A correspondência de padrões em strings é um problema fundamental na ciência da computação. O algoritmo Knuth-Morris-Pratt (KMP) resolve esse problema de forma eficiente para um único padrão, evitando retrocessos no texto principal. O núcleo do KMP reside na construção da função de falha (frequent ...
Publicado em 7-25 22:49
Problema Rima: Árvore Trie e Programação Dinâmica em Árvore
Este artigo resolve o problema Rima, que consiste em construir a sequência mais longa de palavras onde cada par adjacente rima. A definição de rima é que o comprimento do sufixo comum mais longo entre duas palavras A e B deve ser pelo menos max(|A|, |B|) - 1.
Descrição do Problema
Dado N palavras distintas, todas compostas por letras minúsculas ...
Publicado em 7-20 08:23
Soluções Técnicas e Algoritmos do AtCoder Beginner Contest 353
Problema A - Buildings
O objetivo é identificar o índice do primeiro edifício cuja altura seja estritamente maior que a do edifício inicial da sequência. Caso nenhum edifício satisfaça essa condição, o algoritmo deve retornar -1. A abordagem processa os dados de entrada em tempo linear, mantendo a altura de referência e verificando cada valor s ...
Publicado em 7-9 04:22
Soluções para Problemas de Programação Competitiva em 2024
A implementação utiliza uma estrutura de trie para armazenar as permutações. O código abaixo foi refatorado com nomes de variáveis e lógica alterados.
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
const int MAX_PERM = 1e6 + 10;
int perm_input[MAX_PERM][11];
int trie[MAX_PERM][11];
int node_counter;
void resolver() {
...
Publicado em 6-20 19:03
Autômato Aho-Corasick para Detecção de Múltiplos Padrões
Autômato Aho-Corasick: Uma Visão Geral
O Autômato Aho-Corasick (AC) é um algoritmo eficiente para busca de múltiplos padrões em um texto. Ele se destaca por realizar essa tarefa em complexidade linear em relação ao tamanho total dos padrões e do texto. Essencialmente, se você possui um conjunto de cadeias de caracteres (padrões) e uma cadeia de ...
Publicado em 6-17 04:04