Your SlideShare is downloading. ×
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Dicas para maratonas de programação
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Dicas para maratonas de programação

491

Published on

Dicas para maratonas de programação

Dicas para maratonas de programação

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
491
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Dicas para Maratonas de Programação Prof. MSc. Anderson Viçoso de Araújo about.me/andvicoso
  • 2. Roteiro  Introdução  O que é?  Motivação  Preparação  Prova  BOCA  Dicas  Estruturas de dados  Equipe  Erros comuns
  • 3. Introdução Vamos começar!
  • 4. O que é?  Competição com diversas equipes de programadores tentando resolver o maior número de problemas em menor tempo;  Equipes de 3 programadores e 1 reserva;  Toda equipe deve ter um coach (técnico);  O número de problemas depende da competição (6-15);  Pode ter problemas em inglês;  Existe a etapa nacional e internacional da competição  Pode render uma viagem...
  • 5. Dados  InterFatecs  Começou em 2011;  Realizada pela primeira vez em SJC em 2014;  123 equipes inscritas de 23 Fatecs  Brasil:  Começou em 1996;  586 times de 182 escolas em 36 sedes  Vencedores útimo ano: USP SC, USP e UFPE  Mundo:  Começou em 1977 nos EUA  32.043 alunos e professores de 2.286 universidades de 94 países (seis continentes);  Os vencedores dos últimos 4 anos são sempre China e Russia
  • 6. Motivação  Você está estudando computação, você DEVERIA gostar de programar  Se não gosta, provavelmente está no lugar errado…  Diversas empresas fazem testes similares aos das maratonas de programação para contratar programadores;  Alguns sites indicam vagas em empresas aos melhores programadores  É legal competir!  Ganhar melhor ainda!  A maioria dos eventos tem premiação  Algumas até em dinheiro! Uhuu!
  • 7. Como Se Preparar  SPOJ (http://br.spoj.com)  URI Online (http://www.urionlinejudge.com.br)  TopCoder (http://community.topcoder.com)  Google Code Jam (http://code.google.com/codejam)  CodinGame (http://www.codingame.com)  Maratona 101: http://www.fatecmogidascruzes.com.br/interfatecs/paginas/documentos/Marat101.pdf
  • 8. Prova Mandando bala!
  • 9. Funcionamento da Maratona  Warmup  Tem 1 hora de duração;  Em geral, apresenta só um problema fácil para ambientação das equipes;  Prova  Geralmente tem 5 horas de duração;  Podem levar códigos impressos;  Durante a prova:  Pode sair pra beber água, ir no banheiro e comer;  Não pode acessar outros web sites além do site do BOCA;  Cada equipe que resolver um dos problemas, recebe um balão;  Critério de classificação  Quantidade de problemas resolvidos;  Quantidade de tempo que cada equipe necessitou para resolver os problemas, em minutos decorridos desde o início da competição.
  • 10. BOCA  Problems  Visualizar as questões da prova.  Runs  Submeter as suas soluções e receber as respostas dos juízes  Para submeter uma solução, o time deverá selecionar o problema para o qual a solução foi feita, a linguagem utilizada e depois carregar o arquivo contendo a solução  Score  Mostra o placar atualizado da competição. Vale a pena lembrar que o placar será congelado antes do final da competição (suspense mantido :-))  Clarifications  Essa opção permite que o time faça perguntas aos juízes a cerca de um problema específico ou de algum aspecto geral da prova  Tasks  O time poderá enviar arquivos para impressão
  • 11. BOCA - Tipos de Respostas Resposta Descrição YES Seu programa foi aceito, e você receberá um balão da cor correspondente ao problema. NO: Incorrect Output Também conhecido como Wrong Answer. Indica que seu programa respondeu incorretamente a algum(ns) dos testes dos juízes. NO: Time-limit Exceeded A execução do seu programa excedeu o tempo permitido pelos juízes. Esse limite de tempo usualmente não é divulgado aos times e pode variar para cada problema. NO: Runtime Error Durante o teste ocorreu um erro de execução (causado pelo seu programa) na máquina dos juízes. Acesso a posições irregulares de memória ou estouro dos limites da máquina são os erros mais comuns. NO: Compilation Error Seu programa tem erros de sintaxe. Pode ser ainda que você errou o nome do problema ou linguagem no momento da submissão. NO: Output Format Error Também conhecido como Presentation Error, indica que a saída do seu programa não segue a especificação exigida na folha de questões, apesar do "resultado" estar correto. Corrija para se adequar à especificação do problema. NO: Contact Staff Você deve pedir a presença do pessoal de staff, pois algum erro incomum aconteceu.
  • 12. Como resolver os problemas?  Conhecer algoritmos e estruturas de dados  Conhecer bem a equipe e trabalhar em grupo  Conhecer bem a linguagem  Conhecer a IDE
  • 13. Algoritmos e Estruturas de Dados  Grafos, pilhas, filas, listas, árvores, matrizes, vetores, …  Recursão, Ordenação, Programação Dinâmica, Algoritmos de Busca, …  Referência excelente:  Algoritmos - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
  • 14. Trabalho em Equipe  Definam uma estratégia;  Depende da composição da equipe;  Exemplos:  Estratégia simples: Mais individualista possível;  Terminal Man: Um fica sempre no computador e os outros vão avaliando os problemas individualmente;  Think Tank: Um no computador e os dois outros focam no mesmo problema;
  • 15. Linguagens  Conheça os recursos disponíveis da linguagem e use-os ao máximo;  Em particular, você nunca deve ter que implementar um algoritmo de ordenação à mão, por exemplo;  Saiba como debugar o código na linguagem  Criar breakpoints, watches, …;  C e C++  int main deve retornar 0 no final do programa;  Não usar conio.h;  Java  Nomeie a sua classe com o nome do problema, em geral em minúsculas;  Não se pode usar pacotes;
  • 16. Dicas Gerais  Não precisa deixar o código bonito, mas tem que estar compreensível;  Use as letras indicadas na descrição do problema para nomear as variáveis;  Occam’s Razor: A solução melhor é sempre a mais simples!  Muito cuidado com os limites das entradas;  Implementar no papel em pseudo-código antes de passar para o computador;  Cuidado com: Ponteiros, memória, tamanho e tipos das entradas  Leve impressos:  Tabela ASCII;  Códigos mais complexos;  Saiba:  Métodos de manipulação e formatação de Strings;  Métodos de manipulação e impressão de matrizes;  Melhor dica de todas: PRATICAR!
  • 17. Submissões  Entradas e Saídas dos Problemas  Termine sempre as suas respostas com uma quebra de linha  TESTE BEM o algoritmo antes da submissão  Os casos de teste não são somente os descritos no problema. São compostos de diversos outros testes. Pense nisso!  Submissões erradas somam penalidades no tempo, em geral 20 minutos
  • 18. Erros Bobos/Comuns  Crie o seu arquivo-fonte contendo a solução de um problema com o nome indicado no enunciado;  Escolha a linguagem correta na submissão;  Lembre-se de que sua solução deve ler os dados da entrada padrão e escrever os resultados na saída padrão. Nada deve ser escrito na saída padrão de erro;  Escrita das saídas com espaços adicionais;
  • 19. Dúvidas? Boa Sorte! Let the carnage begin! (Rock 'N Roll Racing, 1993) about.me/andvicoso

×