Algoritmo de Mo: Introdução ao Método
Este artigo apresenta uma introdução prática ao algoritmo de Mo, um método eficiente para resolver conusltas em intervalos com atualizações. Embora o foco inicial fosse abordar variantes avançadas como Mo com rollback, Mo em árvores e Mo bidimensional, a dificuldade em dominá-las levou à decisão de documentar apenas as versões básicas — Mo simp ...
Publicado em 9-16 07:19
Notas de Estudo: Técnicas e Algoritmos em Programação Competitiva
11/4
Conjuntos: Para lidar com $2^k$ conjuntos, onde cada conjunto tem todos os seus subconjuntos marcados, uma abordagem em $O(k2^k)$ é viável.
Coloração: Para dois sequências, $a$ monotonicamente crescente e $b$ monotonicamente decrescente, encontrar o mínimo de $\max(a_i, b_i)$ pode ser resolvido eficientemente com busca binária.
Placa de C ...
Publicado em 9-12 21:10
Análise Técnica: Problemas Selecionados do Codeforces Round 922
Problema A: Brick Wall
Neste problema, temos uma parede de dimensões \(n \times m\) e uma quantidade ilimitada de tijolos de tamanho \(1 \times x\), onde \(x \ge 2\). O objetivo é preencher a parede completamente. A estabilidade da parede é calculada somando-se 1 para cada tijolo colocado horizontalmente e subtraindo-se 1 para cada tijolo na ve ...
Publicado em 9-3 10:25
Soluções do Concurso Codeforces Hello 2024
Soluções do Concurso Codeforces Hello 2024
A. Troca de Carteiras
Este problema consiste em determinar o vencdeor de um jogo simples. Dado dois inteiros a e b representando o dinheiro de Alice e Bob respectivamente, Alice vence se a soma for ímpar, caso contrário Bob vence.
#include <iostream>
using namespace std;
int main() {
ios_ba ...
Publicado em 8-1 03:34
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
Operações Bitwise, Conversão de Bases e Manipulação de Bits com bitset em C++
O processamento de dados ao nível de bits é uma técnica fundamental em computação de baixo nível e programação competitiva. Compreender como convertre bases numéricas e manipular bits individualmente permite otimizações significativas de memória e performance.
Conversão de Decimal para Binário
Existem diversas abordagens para convreter um númer ...
Publicado em 7-23 10:56
Análise de Problemas: Universal Cup Stage 5 - Osijek
Neste artigo, exploramos soluções detalhadas para os problemas da 5ª etapa da Universal Cup (Osijek), focando em abordagens algorítmicas avançadas como NTT, Casco Convexo e Programação Dinâmica.
D. Distinct Subsequences
O desafio consiste em contar quantas subsequências distintas de comprimento k podem ser formadas a partir de uma string binári ...
Publicado em 7-20 12:40
Fevereiro — Semana 3
2025.2.17
A: Sede de Sal
As operações que exigem custo adicional são executadas no máximo uma vez. Portanto, existem três cenários. O primeiro é saltar diretamente para a frente e gastar um custo extra para recuar. O segundo é não realizar nenhuma operação com custo adicional; ambos são simples. No primeiro caso, basta consultar o mínimo de pre ...
Publicado em 7-16 04:41
Resolução de Problemas com Busca Binária em C++
Introdução à Busca Binária em Problemas de Programação Competitiva
A busca binária é um algoritmo fundamental amplamente utilizado na programação competitiva devido à sua eficiência (complexidade de tempo logarítmica O(log N)). Este artigo explora diversas aplicações da busca binária em problemas comuns, desde a localização de elementos até a c ...
Publicado em 7-13 10:38
Análise pós-concurso do AtCoder Beginner Contest 383
Problema A
A solução é uma simulação direta. Não há grandes complicações.
int main() {
int linhas, colunas;
cin >> linhas >> colunas;
vector grade(linhas);
for (int i = 0; i < linhas; i++) cin >> grade[i];
int contador = 0;
for (int i = 0; i < linhas; i++) {
for (int j = 0; j < colunas; j++) {
if (grade[i ...
Publicado em 7-13 02:36