Sobre o BOCA
Dicas Úteis
Antes da Prova
Durante a Prova
MINI MARATONA DE
PROGRAMAÇÃO
SOBRE O BOCA
BOCA
• O BOCA Online Contest Administrator é um
sistema de administração de competições de
programação
– Disponibiliza os problemas, placar, e troca de
mensagens;
– Suporta usuários remotos;
– Permite que os participantes enviem seus códigosfonte;
– Correção automática ou personalizada;
– Interface web.
Tipos de Erros
• O autojudge exibe uma mensagem após a
correção do código-fonte enviado;
• No caso de erro, uma mensagem específica é
exibida para que o código-fonte seja corrigido
e submetido novamente
– No entanto, a mensagem nem sempre é específica
sobre a localização do erro.
Tipos de Erros
• Wrong Answer: Resposta errada
– Novamente, a bateria de testes é extensa, e
embora seu programa tenha executado
normalmente para os testes que você fez, há algo
de errado;
– Realize testes diferentes.
Tipos de Erros
• Compile Error: Erro de compilação
– Simples assim.
Tipos de Erros
• Runtime Error: Erro de execução
– O programa deu pau em algum dos testes
realizados;
– Note que a bateria de testes é extensa, e embora
seu programa tenha executado normalmente para
os testes que você fez, há algo de errado;
– Procure por erros de memória.
Tipos de Erros
• Time Limit Exceeded: Tempo de execução
excedido
– O programa demorou demais a responder;
– Não foi avaliado se a resposta está certa ou
errada;
– Procure por procedimentos pesados ou loops
infinitos.
Tipos de Erros
• Presentation Error: Saída em formato errado
– A resposta dada está em formato errado em
relação ao que foi pedido;
– Uma diferença mínima, como uma quebra de
linha já é suficiente;
– Note que, neste caso, não foi avaliado se a solução
está certa ou errada.
Código Aceito
• Accepted: Código aceito.
O que não é permitido
•
•
•
•
Internet;
Aparelhos eletrônicos;
Comunicação externa;
Chamadas de sistema.
ANTES DA PROVA
Antes da Prova
• Ir ao banheiro;
• Levar bebida e comida
– Exceção;
– Manter os laboratórios limpos;
– Nada disso sobre a mesa.
• Levar papel para rascunho, e canetas;
• Levar material impresso
– STL, para quem usa.
Antes da Prova
• Laboratórios abertos às 18:30;
• Criar códigos padrão
– Uma cópia para cada exercício.
• Deixar editores e terminal preparados.
Exemplo de Código Padrão
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <iostream>
using namespace std;
const int INF = 0x3F3F3F3F;
const int NULO = -1;
const double EPS = 1e-10;
_inline(int cmp)(double x, double y = 0, double tol = EPS) {
return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;
}
int main(){
int i, j;
return 0;
}
DURANTE A PROVA
Início da Prova
• Estabeleça uma regra para o rodízio do
computador
– Quem começa programando?
– Quem entra na sequência?
– Quem vai liderar?
• Cada aluno pega um problema diferente
– Quem não está no computador, programa no
papel;
– Depois transfere para o computador.
Início da Prova
• No início, um aluno não ajuda ao outro, pois
os problemas são fáceis
– Cada um com o seu;
– Maior produtividade;
• Os alunos se comunicam entre si para dividir a
prova
– Evita que 2 façam o mesmo problema;
– O time não pode ficar todo concentrado em um
único problema no início da prova.
Início da Prova
• Procure os exercícios mais fáceis e os marque
– “Dá pra fazer” é diferente de “fácil”;
• Leia a prova toda (na diagonal)
– Não pare no primeiro fácil.
• Não se deixe iludir pelo tamanho do enunciado
– Enunciado pequeno não implica em problema fácil.
• Dê uma olhada nos exemplos de entrada e saída
– Problemas fáceis tem dados fáceis.
• Deixe os problemas difíceis para o final.
Durante a Prova
• Ainda assim, não sei qual problema devo resolver
– Olhe o placar no BOCA (score) e veja quais são os
problemas mais resolvidos;
• Certamente são os mais fáceis.
– Talvez o problema que você achou fácil não o seja
• Se poucas equipes os resolveram…
• Agarrei em um problema
– Já o submeti x vezes…
– Saia do computador e parta para outro.
Durante a Prova
• É necessário se policiar quanto ao nervosismo
– Se está perdido em um problema, não insista
muito;
– Respire e passe para outro.
• É necessário ter consciência de que você pode
não estar contribuindo
– Você pode ser “despejado” do computador;
– Ouça seus parceiros.
Durante a Prova
• Não submeta um código sem compilar e testar
– Mesmo que tenha feito somente uma alteração
mínima;
– Não vale a pena tomar um pênalti.
• Depois de submeter um problema, não fique
parado esperando a resposta
– Resolva outro problema, a resposta pode
demorar;
– Cheque a resposta de vez em quando.
Durante a Prova
• Se houver alguma dúvida a respeito de
enunciado/correção, use o clarification
– Envio e resposta pelo próprio BOCA;
– Respostas não muito específicas;
– Não haverá resposta oral;
– A dúvida pode ser respondida só para quem
perguntou ou para todos
• Dê uma olhada nos clarifications de vez em quando.
Durante a Prova
• Resolvi meu primeiro problema e o primeiro
colocado já resolveu 5, é o fim?
– Não, a maioria dos problemas é resolvida na
primeira metade do tempo;
– Depois a velocidade diminui muito;
– Se o primeiro colocado tomou muitos pênaltis, ele
pode ser ultrapassado;
– Os outros problemas podem ajudar.
Final de Prova
• O cansaço bate, o cérebro falha…
– Beba água, vá ao banheiro.
• O time pode se reunir para resolver um único
problema
– Provavelmente um dos mais difíceis;
– Olhe os problemas mais resolvidos e que o seu
time não resolveu;
– Não se deixe levar apenas pela equipe que está
liderando.
Final de Prova
• Faltando 60 minutos para o fim, o placar é
congelado
– Ninguém sabe se foi ultrapassado ou se ultrapassou
outro time;
– Os times sabem se acertaram ou não os problemas.
• Faltando 30 minutos, os times não recebem mais
as respostas sobre suas submissões
– Mas continuam sendo avaliados;
– A competição não termina.
Final de Prova
• Esta última etapa é muito importante
– Partir pro tudo ou nada;
– Prepare algum código e o submeta;
– Altere algo que pode estar errado e submeta de
novo;
– Faça umas 10 submissões para cada problema que
faltar
• Se acertar, os penâltis posteriores não serão
considerados.
• O final geralmente é frenético.
DICAS ÚTEIS
Dicas Úteis
• Fique atento ao intervalo dos valores da
entrada e saída
– Overflow aritmético.
• Não esquecer do return 0 ao final;
• Toda linha termina com ‘\n’
– Causa Presentation Error.
Dicas Úteis
• Em todos os problemas que veremos, os
dados são lidos da entrada padrão e escritos
na saída padrão
– Nada de abrir arquivos ou chamadas de sistema.
• Nos testes, utilizaremos redirecionamento da
entrada
– ./programa < entrada.txt
Dicas Úteis
• Existem um aspecto importantes sobre a
leitura de dados
– Até quando ler?
• Diz respeito ao término da entrada
– Número fixo de valores, valor especial ou EOF.
• O enunciado do problema deve ser lido
atentamente
– A codificação da leitura dos dados não deve ser
um processo lento.
MERCHANDISING
Merchandising
• Temos um projeto aprovado pela FAPEMIG
exclusivamente para treinamento para Maratona
de Programação
–
–
–
–
3 bolsas de R$ 350,00 por um ano (12 parcelas);
3 computadores;
Material didático e de divulgação;
Financiamento de transporte, hospedagem e
alimentação para participação em eventos.
• Disciplina eletiva BCC402 – Algoritmos e
Programação Avançada.
Merchandising
• Competições previstas:
– 1a Maratona Mineira de Programação
• Uberlândia, 26 de Maio.
– Seletivas da Universidade do Estado de Santa
Catarina
• Online, 1 de Junho.
– Maratona Nacional de Programação
• 15 de Setembro.
– Final Nacional
• Londrina, 9 e 10 de Novembro.
Perguntas?
Até Amanhã!
Download

Durante a Prova