Otimização de Orçamento para Períodos Fiscais
O problema gira em torno da otimização de um orçamento agrícola, onde o objetivo é minimizar o gasto máximo em qualquer período fiscal, conhecido como "fajomês". Temos um total de N dias com desepsas diárias específicas e precisamos dividir esses dias em exatamente M fajomêses consecutivos. Cada dia deve pertencer a um único fajomês.
...
Publicado em 7-9 23:55
Soluções de Programação Competitiva usando Matemática e Recursões em Matriz
Problema 1: Questão Matemática Simples
Enunciado: Dado um inteiro positivo n, calcular a soma da expressão a seguir, módulo 10^9+7:
\[ S = \sum_{i=1}^{n} i \cdot \sum_{j=i}^{n} \binom{j}{i} \]
Ideia de Solução: Utilizando a identidade combinatória \(\sum_{i=m}^{k} \binom{i}{m} = \binom{k+1}{m+1}\), simplificamos a expressão para \(S = (n-1) \cd ...
Publicado em 7-8 06:33
Soluções para Desafios de Programação: Análise e Implementação
Ordenação e Seleção Ótima
Tema: Algoritmos de ordenação, enumeração e estratégias gananciosas
Abordagem: Utilizaremos ordenação para organizar os elementos por tamanho, seguida por enumeração para identificar qual elemento oferece o melhor resultdao quando posicionado estrategicamente.
Código Implementado
#include <iostream>
#include < ...
Publicado em 7-6 20:01
Resoluções da Competição NOIP: Análise de Problemas de Programação
\(100+100+40+0\), T3 não otimizado corretamente resultou em \(20\) pontos perdidos.
Posteriormente, descobri que durante a competição, a solução para T3 tinha complexidade de tempo e correção corretas, apenas com uma grande contsante que me fez achar que não executaria dentro do tempo limite.
A. Conjunto
A resposta satisfaz a propriedade monóto ...
Publicado em 7-1 17:46
Problema Bob in Wonderland do CERC 2019: Mínimo de Passos para Transformar uma Cadeia Incompleta em Reta
Contexto do Problema
Este problema foi adaptado da competição CERC 2019. Trata-se de determinar o número mínimo de operações necessárias para converter uma estrutura de anéis conectados, chamada de cadeia incompleta, em uma cadeia reta, onde cada anel está conectado a no máximo dois outros.
Descrição do Problema
Uma cadeia incompleta é represen ...
Publicado em 6-29 21:01
Álgebra Linear para Competições de Programação
Vetores e Matrizes
Parte 1: Vetores - Posições e Transformações
Imagine que você está desenvolvendo um jogo 2D e precisa controlar a posição de um personagem no mapa.
"Onde está o personagem?" → Você precisa de coordenadas, como (15, 8).
"Para qual direção ele se moverá?" → Você precisa de uma direção e distância, como &quo ...
Publicado em 6-29 00:21
Coloração de Grafos Bipartidos em Programação Competitiva
Fundametnos de Grafos Bipartidos
Um grafo é bipartido se e somente se não contém ciclos de comprimento ímpar. Um método eficiente para verificar essa propriedade é a coloração por busca em profundidade (DFS). A ideia é tentar atribuir dois rótulos (0 ou 1) aos vértices de modo que vértices adjacentes tenham rótulos diferentes. Se em algum momen ...
Publicado em 6-28 17:07
Conjuntos Disjuntos: Fundamentos e Aplicações em Programação Competitiva
Conjuntos disjuntos (ou union-find) são estruturas de dados usadas para gerenciar a partição de elementos em conjuntos disjuntos. Implementados como uma floresta, cada árvore representa um conjunto, e os nós dentro da árvore correspondem aos elementos desse conjunto.
A estrutura suporta duas operações principais:
União (Union): combina dois co ...
Publicado em 6-22 00:32
Resolução de Equações com Aritmética Modular e Algoritmo de Qin Jiushao
Pré-requisitos
Para uma variável (x) e um módulo (p), se definimos (x = kp + b), então (x \equiv b ,(\mod p)), e simultaneamente (f(x) \equiv f(b) ,(\mod p)).
A partir disso, podemos concluir que: sob o módulo p, uma condição necessária para (f(x) = 0) é que (f(x \mod p) = 0). Quando o módulo é suficientemente grande ou consideramos múltiplos m ...
Publicado em 6-21 21:41
Detecção de Palavras em uma Matriz de Letras
Dado uma matriz quadrada de dimensão n×n contendo letras, pode existir múltiplas ocorrências da palavra yizhong. A palavra na matriz deve estar posicionada em sequência contínua ao longo de uma direção constante. A busca deve considerar as 8 direções possíveis (horizontal, vertical e diagonais). Como as palavras podem se cruzar e compartilhar l ...
Publicado em 6-20 05:36