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

Soluções para o Codeforces Round 1027 (Div. 3) - Problemas de A a G

A. Ano Quadrado Verifique se um número é quadrado perfeito usando sqrtl. Se positivo, retorne 0 e a raiz; caso contrário, retorne -1. #include <iostream> #include <cmath> using namespace std; typedef long long ll; int main() { ios::sync_with_stdio(0); cin.tie(0); int testes; cin >> testes; while (testes--) ...

Publicado em 7-15 21:20

Resolução de Problemas de Arrays em Java: Guia de Algoritmos Otimizados

Soma Máxima de Subarray (Questão 53) O desafio consiste em encontrar a maior soma possível entre todos os subarrays contínuos de um array de inteiros. O foco aqui é garantir eficiência em termos de tempo, percorrendo o array apenas uma vez. class Solution { public int maxSubArray(int[] elementos) { int somaGlobal = elementos[0]; ...

Publicado em 7-15 17:32

LeetCode 682: Sistema de Pontuação de Beisebol (C++/Java)

O problema 682 do LeetCode simula um rgeistrador de pontos de um jogo de beisebol. Dada uma lista de strings, cada string pode ser um dos seguintes tipos: Número inteiro: Representa diretamente os pontos ganhos na rodada atual. "+": Os pontos da rodada atual são a soma dos pontos das duas últimas rodadas válidas. "D": Os po ...

Publicado em 7-14 10:33

Árvores de Segmento: Solução para Consultas de Soma em Intervalos

As árvores de segmento representam um avançado conceito em estruturas de dados, frequentemente classificadas como problemas de dificuldade elevada. Essencialmente, as árvores de segmento são uma aplicação clássica do princípio de troca de espaço por tempo, utilizando uma estrutura unidimensional para otimizar operações que seriam de ordem tempo ...

Publicado em 7-14 10:14

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

Tutorial de Funções Recursivas em Python

A recursão em programação é um conceito onde uma função chama a si mesma para resolver um problema. É uma forma de "dividir para conquistar", onde um problema maior é decomposto em subproblemas menores da mesma natureza. O que é Recursão de Função Uma chamada de função aninhada ocorre quando uma função é definida dentro de outra. A ch ...

Publicado em 7-12 20:03

Explorando Variações do Problema da Mochila com Programação Dinâmica

Problema da Mochila 0/1 (0-1 Knapsack) No cenário clássico da mochila 0/1, dispomos de $N$ itens e uma mochila com capacidade máxima $V$. Cada item possui um volume $v_i$ e um valor $w_i$. A restrição fundamental é que **cada item pode ser escolhido apenas uma vez**. O objetivo é maximizar o valor total sem exceder a capacidade $V$. ### Defi ...

Publicado em 7-12 10:06

Otimização de Desempenho em Aplicações C++: Exemplos Práticos

Este documento explora técnicas de otimização de código C++ através da aálise de problemas de programação competitiva. Dado um conjunto de cartas, cada uma contendo um dígito 0 ou 5, o objetivo é formar o maior número possível usando um subconjunto das cartas, de forma que este número seja divisível por 90. A formação do número é feita ao disp ...

Publicado em 7-12 05:42