Cálculo Rápido de Potências Modulares e Inversos Multiplicativos
A operação de exponenciação modular rápida permite calcular $a^k \pmod{p}$ em complexidade de tempo $O(\log k)$. Para múltiplas consultas, a complexidade total é $O(n \cdot \log k)$, onde $1 \leq a, p, k \leq 10^9$.
Princípio Básico A ideia fundamantal é pré-calcular potências de $a$ na forma $a^{2^0}, a^{2^1}, a^{2^2}, \dots, a^{2^{\log k}}$. ...
Publicado em 7-27 00:24
Utilizando Tabelas Hash para Soluções Eficientes em Problemas de Algoritmos
Fundamentos de Tabelas Hash
Tabelas hash são estruturas de dados primariamente utilizadas para verificar rapidamente a existência de um elemento em uma coleção. O princípio envolve uma função hash que mapeia um dado (como um nome de aluno) a um índice em uma tabela. Consultar esse índice permite determinar de forma ágil se o dado está presente. ...
Publicado em 7-26 12:08
Algoritmos para Geração de Autoestereogramas em Texto ASCII
Os autoestereogramas de imagem única (SIRDS) utilizam a paralaxe binocular para criar a ilusão de profundidade tridimensional a partir de uma superfície bidimensional. Quando adaptados para ambientes de terminal ou interfaces de texto puro, essa técnica é conhecida como estereograma ASCII. Em vez de manipular pixels coloridos, o algoritmo deslo ...
Publicado em 7-26 09:52
Explorando os Algoritmos da Standard Template Library em C++
A Standard Template Library (STL) do C++ oferece um conjunto poderoso de algoritmos que operam em coleções de dados, como vetores, listas e outros contêineres. Estes algoritmos são definidos em cabeçalhos como <algorithm> e <numeric> e são projetados para serem genéricos, trabalhando com iteradores. Este guia explora os algoritmos m ...
Publicado em 7-26 09:03
Implementando Árvores AVL: Estruturas de Dados Balanceadas em Java
Compreendendo as Árvores Binárias de Busca Balanceadas (AVL)
Uma Árvore AVL, ou árvore binária de busca balanceada, é uma estrutura de dados essencial que otimiza as operações de busca, inserção e remoção, garantnido que elas sempre ocorram em tempo logarítmico. A chave para essa eficiência é o mecanismo de balanceamento que a árvore mantém con ...
Publicado em 7-25 19:57
Encontrando o Maior Submatriz Livre de Obstáculos
Este artigo explora o problema de encontrar o maier sumbatriz retangular dentro de uma matriz dada, com a restrição de que o submatriz não pode conter nenhum ponto de obstáculo especificado.
Definições Fundamentais
Submatriz Válida
Uma submatriz válida é um retângulo cujas bordas são paralelas aos eixos de coordenadas e que não contém quaisquer ...
Publicado em 7-25 14:35
Diário de Competição NOIP 2023
Reflexões sobre o Desempenho
Dia -1: Revisei estruturas de dados como Tabelas de Segmentação (ST), Árvores de Segmento (Segment Tree), KMP e LCA. Infelizmente, nenhum desses tópicos apareceu na prova.
Dia 0: Uma nova revisão geral, sentindo uma mistura de confiança e incerteza. Planejei a estratégia para o dia da prova e depois descansei.
Dia 1 ...
Publicado em 7-24 09:06
Guia Completo de Algoritmos da Biblioteca Padrão C++
Algoritmos de Sequência Não Modificadora
Estes algoritmos não alteram os elementos dos recipientes sobre os quais operam.
1.1 find, find_if e find_end
find(inicio, fim, valor): Localiza o primeiro elemento igual a valor, retornando um iterador (retorna fim se não encontrado).
find_if(inicio, fim, predicado): Localiza o primeiro elemento que ...
Publicado em 7-22 22:47
Algoritmo de Ordenação Rápida
Primeira Implementação: Partição Básica
Dada uma matriz, ordená-la de forma que todos os elementos menores que o último elemento fiquem à sua esquerda, e todos os elementos maiores fiquem à sua direita. Os elementos nas partições esquerda e direita não precisam estar ordenados internamente.
Exemplo: Para a matriz [5, 6, 3, 1, 2, 3], após a orde ...
Publicado em 7-22 13:07
Dominando Algoritmos da STL no C++ Moderno
1. Algoritmos de Consulta (Não Modificadores)
Estes algoritmos realizam operações de leitura sobre os containers sem alterar o estado ou a ordem dos elementos originais.
1.1 find e find_if
Utilizados para localizar elementos específicos ou que atendam a um critério lógico (predicado).
#include <algorithm>
#include <vector>
#include ...
Publicado em 7-22 12:30