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

Algoritmos de Grafos: Cálculo de Distâncias Médias, Minimização de Ruído e Identificação de Pontes Críticas

Page Hopping - UVA 821 Em um ambiente com N salas interconectadas (1≤N≤100), calculamos a distância média dos caminhos mais curtos entre todos os pares de salas alcençáveis. A entrada consiste em múltiplos casos de teste terminados com "0 0". Para cada caso, pares de inteiros indicam conexões diretas entre salas. #include <iostream ...

Publicado em 7-14 18:47

Algoritmo de Busca em Largura (BFS) para Planejamento de Caminhos em Labirintos

A aplicação da Busca em Largura (BFS) em problemas de labirinto oferece uma abordagem sistemática para exploração, mas enfrenta limitações em cenários dinâmicos. Se um grupo de agentes iniciar de um ponto e se espalhar camada por camada, o número de agentes necessário cresce exponencialmente com a profundidade da busca. Entretanto, se o labirin ...

Publicado em 7-6 10:45

Estradas e Rotas: Caminhos Mínimos com Ciclos e Arestas Negativas

Um fazendeiro deseja transportar leite para T cidades (1 ≤ T ≤ 25.000), numeradas de 1 a T. As cidades são conectadas por R estradas (1 ≤ R ≤ 50.000) e P rotas aéreas (1 ≤ P ≤ 50.000). Cada estrada ou rota i liga a cidade Ai a Bi com custo Ci. Para estradas, 0 ≤ Ci ≤ 10.000; para rotas aéreas, -10.000 ≤ Ci ≤ 10.000. Estradas são bidirecionais, ...

Publicado em 6-30 03:02

Implementações de DFS e BFS em Grafos

Métodos de Travsesia em Grafos Dois métodos fundamantais para percorrer grafos: DFS (Busca em Profundidade) BFS (Busca em Largura) - implementada com fila DFS com Lista de Adjacência #define TAM_MAX 100 #define INF 65535 typedef struct NoAdjacente* PonteiroNo; struct NoAdjacente { int Vertice; int Peso; PonteiroNo Proximo; }; typedef ...

Publicado em 6-29 05:24

Resolução dos Problemas D e F da Codeforces Round #694 (Div. 2)

Problema D: Definição Estranha Definimos dois números como adjacentes se o resultado de lcm(a,b)/gcd(a,b) for um quadrado perfeito. Dada uma sequência de comprimento n, para cada elemento a[i], d[i] é a contagem de elementos adjacentes a ele. A cada segundo, cada elemento se transforma no produto dele mesmo com todos os seus elementos adjacente ...

Publicado em 6-25 16:33

Implementações de Algoritmos de Grafos em C++

Este artigo apresenta diferentes implementações de algoritmos de grafos, incluindo Djikstra, SPFA, Floyd-Warshall e Kruskal. As soluções estão em C++ e exploram diversas técnicas de programação competitiva. Algoritmo de Dijkstra com Fila de Prioridade #include<bits/stdc++.h> #define ll long long using namespace std; const int MAXN = 1e6+ ...

Publicado em 6-25 04:40

Implementação e Otimização da Estrutura de Dados Union-Find

A estrutura de dados Union-Find, também conhecida como Disjoint Set Union (DSU), é fundamental para gerenciar coleções de elementos particionados em conjuntos disjuntos. Ela permite verificar rapidamente se dois elemenots pertencem ao mesmo conjunto e fundir dois conjuntos distintos. Estrutura Básica com Compressão de Caminho O conceito cent ...

Publicado em 6-22 03:02

Relatório de Simulado de Competição - 10 de Novembro

Pontuação final: 100 + 95 + 0 + 20. A. Operação Numérica (num) Durante a competição, examinei os exemplos e o intervalo de dados. Como todos os números eram primos, pensei imediatamente em MDC e resolvi rapidamente. Na verdade, esse processo de subtração e contagem de valores não repetidos é semelhante ao algoirtmo de Euclides. Não há muito o q ...

Publicado em 6-21 04:12

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