Classificação de problemas

Revisão de 08h54min de 6 de março de 2018 por Hgardin (discussão | contribs)

Os problemas trabalhados desde que o projeto teve início estão sendo classificados e documentados. Os dados aqui apresentados são resultantes das fontes bibliográficas utilizadas e das experiências para a resolução de cada um dos problemas. Agradecemos, em especial, a colaboração de Paulo Daniel Gonçalves, que atuou como monitor do projeto em 2012 e 2013.


Tabela de classificação de problemas

Problema Classificação Dificuldade Observações Lista de usos Referências
Aero Adhoc/Contagem Fácil Contar quantas vezes cada aeroporto aparece na lista de vôos, e por fim imprimir o(s) maior(es) valor(es). 2º encontro 2013
Ants, Colônia de Formigas Grafos Médio Floyd-Warshall deve resolver (Caminho mínimo de qualquer nó para qualquer nó). Porém não sei se os limites permitem isso, preciso verificar. Seletiva 2012 URI 1135
Beldades, Ordenação por Tamanho Ordenação Fácil Ordenação de Strings e Contagem de repetições Seletiva 2012, 2ª seletiva 2013 URI 1244
Bit Aritmética e Álgebra Fácil É necessário dividir a quantia de saque desejada pelos valores das notas disponiveis, a divisão deve ser feita na ordem da maior nota para menor. 1º encontro 2013
Botas, Botas Perdidas Adhoc/Contagem Fácil A partir de uma lista de botas, contar pares de botas (mesmo tamanho, pés diferentes). 3º encontro 2013 URI 1245
Decoder, The Decoder Strings/Tabela ASCII Fácil Cifra de César, foi adicionado 7 a cada valor da string. Tratamento de valores da tabela ASC. 1ª seletiva 2013 UVA 458
Digitos Romanos, Contagem de Dígitos , Romam Digitis Aritmética e Álgebra Fácil Lembra o problema do caixa, de retornar o menor número de notas de dinheiro. 1ª seletiva 2013 URI 1138, UVA 344
Eletricity Aritmética e Álgebra Fácil Verifica as datas que estão em sequência válida (possível de calcular a diferença), calcula a diferença de consumo entre elas, e apresenta o resultado. Seletiva 2012
Espelho Espelho Meu, Mirror, Mirror Adhoc/Matrizes Fácil Operações básicas sobre uma matriz, como rotacionar valores. 1ª seletiva 2013 UVA 466
Fatores, Fatores e Múltiplos Teoria dos Números/Analise combinatoria Difícil 1ª seletiva 2013 URI 1056, ICPC 2013
Fatorial, Fatorial Novamente! Aritmética e Álgebra Fácil Lembra uma mudança de base, onde cada posição vale N!, e N é o nº da posição do dígito. Seletiva 2012, 2ª seletiva 2013 URI 1429
Fechem as portas Aritmética e Álgebra/Vetor Fácil Parece ser apenas percorrer um vetor invertendo o estado de sua posição, os índices são múltiplos de uma variável de controle, e por fim imprimir os índices das posições que contém um determinado estado. 2ª seletiva 2013 URI 1371
Feynman, , Combinatória/Aritmética e Álgebra Fácil/Médio A quantidade de quadrados é uma recorrência: Realizar o somatório N * N + (N-1) * (N-1) + (N-2) * (N-2) + ... 1 * 1 para encontrar o resultado. Seletiva 2012 URI 1323, UVA 12149
Frotatax Aritmética e Álgebra Fácil Multiplica-se o valor de KM/L do combustível pelo seu preço, e compara. 1º encontro 2013
Hist, Maior Retângulo em um Histograma Adhoc/Vetor Médio Salva os números em um vetor, e percorre atualizando os valores, se for igual ao atual então modifica para 1, se não incrementa em 1, e vai incrementando um contador com o valor atual. Seletiva 2012 URI 1683
Matrioshkas Estrutura de Dados/Pilha Fácil/Médio Verificar uma sequência de bonecas matrioshkas está correta (Se uma boneca cabe dentro de outra, levando em consideração que já pode ter outras dentro dela). 5º encontro 2013
Mean, Problema com Mediana e Média Aritmética e Álgebra Fácil/Médio Utiliza a fórmula (A + B + C)/3 = min(A,B). Seletiva 2012 URI 1379
Movimentos, Trilhos Novamente... Traçando Movimentos Adhoc/Matriz Fácil Verificar se a partir de uma posição da matriz é possível se deslocar na matriz para outra posição (Está dentro dos limites, o espaço não está ocupado). 3º encontro 2013 URI 1063
Ordenação Ordenação Fácil Ordenar uma sequência de números (Acho que a saída do último exemplo está errada no pdf, caso contrário não entendi o problema). Seletiva 2012
Palavras Fibonacci; Fibonacci, Quantas Chamadas? Strings/Programação dinamica Difícil 1ª seletiva 2013 ICPC 2012 URI 1029
Parenteses, Balanço de Parênteses I Estrutura de Dados/Pilha Fácil Verificar se os parênteses abre e fecham em ordem. 3º encontro 2013 URI 1068
Permutations, Gerando Permutações Ordenadas Rapidamente Combinatória Médio Enunciado complexo. 2º encontro 2013 URI 1401
Primo, Número primo Teoria dos Números Fácil Verificar se um número é primo. 3º encontro 2013 URI 1165
Quadrado, Quadrado de Pares Aritmética e Álgebra Fácil Imprimir o quadrado de um número. 1º encontro 2013 URI 1073
Stack'em up Adhoc/Vetor Fácil/Médio Começa com um baralho ordenado, aplica as trocas do vetor conforme os embaralhamentos, e imprime o resultado. 5º encontro 2013, 1ª seletiva 2013 UVA 10205
Tic-Tac-Toe, Jogo da Velha Adhoc/Matriz/Contagem Fácil Como X inicia jogando, é necessário verificar se o número de O's é igual ou apenas uma unidade menor que o número de X's. 1º encontro 2013 URI 1130
Trilhos, Rails Estrutura de Dados/Pilha Fácil Enunciado complexo. 1ª seletiva 2013 URI 1062, UVA 514

Classificação de problemas

<html> <head> <meta charset="utf-8"> <title>Lista de Problemas</title> <style> *{ box-sizing: border-box; }

#campoBusca{ background-position: 10px 12px; background-repeat: no-repeat; width: 80%; font-size: 16px; padding: 12px 20px 12px 10px; border: 1px solid #ddd; margin-bottom: 12px; }

table{ font-family: Arial, sans-serif; border-collapse: collapse; width: 100%; }

th, td{ border: 1px solid #dddddd; text-align: left; padding: 8px; }

th{ background-color: #dddddd; }


.button{ position: relative; border: thin; font-size: 20px; color: black; padding: 10px; width: 250px; text-align: center; transition-duration: 0.4s; text-decoration: none; overflow: hidden; cursor: pointer; }

.button:after{ content: ""; background: grey; display: block; position: absolute; padding-top: 300%; padding-left: 350%; margin-left: -20px!important; margin-top: -120%; opacity: 0; transition: all 0.8s }

.button:active:after{ padding: 0; margin: 0; opacity: 1; transition: 0s; } </style>

<script> window.onload = init;

function buscar(){ var textField, filter, tabela, linhas, td, i; textField = document.getElementById("campoBusca"); filter = textField.value.toUpperCase(); tabela = document.getElementById("tabelaDesafios"); linhas = tabela.getElementsByTagName("tr");

for(i = 0; i < linhas.length; i++){ td = linhas[i].getElementsByTagName("td")[0];

if(td){ if(td.innerHTML.toUpperCase().indexOf(filter) > -1){ linhas[i].style.display = ""; }else{ linhas[i].style.display = "none"; } } } }

function init(){ ocultaColuna(5); ocultaColuna(6); }

function ocultaColunaLogica(indice){ document.getElementById("exibirLogicaButton").value = "Exibir Lógica"; document.getElementById("exibirLogicaButton").setAttribute("onclick","mostraColunaLogica(" + indice + ");");

ocultaColuna(indice); }

function mostraColunaLogica(indice){ document.getElementById("exibirLogicaButton").value = "Ocultar Lógica"; document.getElementById("exibirLogicaButton").setAttribute("onclick","ocultaColunaLogica(" + indice + ");");

mostraColuna(indice); }

function ocultaColunaCodigo(indice){ document.getElementById("exibirCodigoButton").value = "Exibir Código"; document.getElementById("exibirCodigoButton").setAttribute("onclick","mostraColunaCodigo(" + indice + ");");

ocultaColuna(indice); }

function mostraColunaCodigo(indice){ document.getElementById("exibirCodigoButton").value = "Ocultar Código"; document.getElementById("exibirCodigoButton").setAttribute("onclick","ocultaColunaCodigo(" + indice + ");");

mostraColuna(indice); }

function ocultaColuna(indice){ var tabela = document.getElementById("tabelaDesafios"); for(var i = 0; i < tabela.rows.length; i++){ tabela.rows[i].cells[indice].style.display = "none"; } }

function mostraColuna(indice){ var tabela = document.getElementById("tabelaDesafios"); for(var i = 0; i < tabela.rows.length; i++){ tabela.rows[i].cells[indice].style.display = ""; } }

function abrirJanelaDesafio(nome, textAreaCols, textAreaRows, windowWidth, windowsHeight){ var nodeCodigo = document.getElementById(nome), htmlContent = nodeCodigo.innerHTML, textContent = nodeCodigo.textContent; var textNode = document.createElement("TEXTAREA"); textNode.setAttribute('cols', textAreaCols); textNode.setAttribute('rows', textAreaRows); var text = document.createTextNode(nodeCodigo.value); textNode.appendChild(text);

var attributes = "width= " + windowWidth + ", height= " + windowsHeight + ", resizable=1"; var newWindow = window.open(, '_blank', attributes); newWindow.document.body.appendChild(textNode); } </script> </head>

<body>

Lista de Problemas

<input type="text" id="campoBusca" onkeyup="buscar()" placeholder="Buscar por problema" title="Insira o nome do problema" style="width: 61%">

<input id="exibirLogicaButton" class="button" type="button" value="Exibir Lógica" onclick="mostraColunaLogica(5);">

<input id="exibirCodigoButton" class="button" type="button" value="Exibir Código" onclick="mostraColunaCodigo(6);">

Problema Classificação Dificuldade Lista de Usos Referências Lógica Código
OBI Repetição/Vetor Muito Fácil OBI 2008 (1º Fase) http://olimpiada.ic.unicamp.br/pratique/programacao/nivelj/2008f1pj_obi Devemos apenas percorrer o número total de competidores para somar a nota nas fases, verificar se ele será convidade, e caso seja incremantar o total de convidados.

<button class="exibirCodigo" onclick="abrirJanelaDesafio('OBICode','40','25',400,450);">Exibir</button>

Auto-Estrada Seleção/Repetição Muito Fácil OBI 2008 (2º Fase) http://olimpiada.ic.unicamp.br/pratique/programacao/nivelj/2008f2pj_auto Cada bloco possui um código, sabendo disso, apenas precisamos saber quantos painéis serão instalados ao decorrer da estrada por meio dos códigos dos blocos, cada código possui uma quantidade dada de refletores, dessa forma, percorremos por uma estrutura de repetição o comprimento da auto-estrada, e verificamos cada códgio somando o valor dele à quantidade de painéis que devem ser instalados.

<button class="exibirCodigo" onclick="abrirJanelaDesafio('AutoEstradaCode','50','25',450,450);">Exibir</button>

Mini-Calculadora Matemática (MDC)/Repetição/Seleção Fácil OBI 2008 (2º Fase) http://olimpiada.ic.unicamp.br/pratique/programacao/nivelj/2008f2pj_minicalc No problema se faz necessário o uso do MDC (Máximo Divisor Comum) que vemos na escola, para que se obtenha o menor resultado possível e que possa ser exibido levando em consideração o tamanho máximo do número de bits. Vale lembrar que o enunciado está confuso em não especificar que o número N de bits que será lido, já é o total de bits pra ser considerado, então não é necessário fazer potência desse valor para descobrir o total de bits.

<button class="exibirCodigo" onclick="abrirJanelaDesafio('MiniCalculadoraCode','50','25',450,450);">Exibir</button>

Aviões de Papel Seleção Muito Fácil OBI 2009 (1º Fase) http://olimpiada.ic.unicamp.br/pratique/programacao/nivelj/2009f1pj_papel Este é um simples problema de lógica, onde, se o número de folhas dividido pela quantidade que cada competidor deve receber for maior ou igual a quantidade de competidores, então cada competidor receberá a quantidade requerida de folhas.

<button class="exibirCodigo" onclick="abrirJanelaDesafio('AvioesDePapelCode','40','25',400,450);">Exibir</button>

Vestibular Strings/Repetição/Seleção Fácil OBI 2009 (1º Fase) http://olimpiada.ic.unicamp.br/pratique/programacao/nivelj/2008f1pj_vestib Basta ler as strings necessárias, e compará-las, caracter por caracter.

<button class="exibirCodigo" onclick="abrirJanelaDesafio('VestibularCode','60','30',600,500);">Exibir</button>







</body> </html>


Contribuintes

  • Ana Elisa T. P. da Palma (Autor), Paulo Daniel Gonçalves (Autor), Mauro Henrique Mulati.



Categorias: WIKI | DECOMP | E2PC