Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Dicas para Maratonas de
Programação
Prof. Dr. Anderson Viçoso de Araújo
facom.ufms.br/~andvicoso
2016
Roteiro
 Introdução
 O que é?
 Motivação
 Preparação
 Prova
 BOCA
 Dicas
 Estruturas de dados
 Equipe
 Erros com...
Introdução
Alongando os dedos...
O que é?
 Competição com diversas equipes de programadores tentando resolver o maior número de
problemas em menor tempo
...
Dados
 Brasil:
 Começou em 1996;
 2014
 643 times de 199 escolas em 41 sedes
 Vencedores: USP SP, UFCG e UFRJ
 Mundo...
Dados (2)
Motivação
 Você está estudando computação, você deveria gostar de programar
 Se não gosta, pode estar no lugar errado…
...
Benefícios
 Mantém o raciocínio afiado
 Melhora as habilidades de programação
 Facilita o entendimentos dos conteúdos d...
Como Se Preparar
 SPOJ (http://br.spoj.com)
 URI Online (http://www.urionlinejudge.com.br)
 CodeForces (http://codeforc...
Prova
Mandando bala!
Funcionamento da Maratona
 Warmup
 Tem 1 hora de duração
 Em geral, apresenta só um problema fácil para ambientação das...
BOCA
 Problems
 Visualizar as questões da prova
 Runs
 Submeter as suas soluções e receber as respostas dos juízes
 P...
BOCA - Tipos de Respostas
Resposta Descrição
YES Seu programa foi aceito, e você receberá um balão da cor correspondente a...
Como resolver os problemas?
 Conhecer algoritmos e estruturas de dados
 Conhecer bem a equipe e trabalhar em grupo
 Con...
Algoritmos e Estruturas de Dados
 Grafos, pilhas, filas, listas, árvores, matrizes, vetores, …
 Recursão, Ordenação, Pro...
Trabalho em Equipe
 Definam uma estratégia
 Depende da composição da equipe
 Caso tenha um problema que envolva geometr...
Linguagens
 Conheça os recursos disponíveis da linguagem e use-os ao máximo
 Em particular, você nunca deve ter que impl...
Dicas Gerais
 Comece a prova ordenando/definindo o nível de dificuldade de cada problema
 Se estiver com dificuldade de ...
Dicas Gerais (2)
 Entradas e Saídas dos Problemas
 Termine sempre as suas respostas com uma quebra de linha
 Leve impre...
Submissões
 TESTE BEM o algoritmo antes da submissão
 Os casos de teste não são somente os descritos no problema. São co...
Erros Bobos/Comuns
 Crie o seu arquivo-fonte contendo a solução de um problema com o nome indicado no enunciado;
 Escolh...
Dicas TLE
 Perto de 106 passos, o programa passa
 107 passos tem de ser passos simples passar
 108 normalmente não pass...
Treinamento
 Roteiro: http://wiki.maratona.dcc.ufmg.br/
 Monitor: Lucas Tsutsui (lucastsui@hotmail.com)
 Professores co...
Dúvidas?
Boa Sorte!
Let the carnage begin! (Rock 'N Roll Racing, 1993)
Dicas para maratonas de programação
Nächste SlideShare
Wird geladen in …5
×

Dicas para maratonas de programação

2.504 Aufrufe

Veröffentlicht am

Dicas para maratonas de programação

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

Dicas para maratonas de programação

  1. 1. Dicas para Maratonas de Programação Prof. Dr. Anderson Viçoso de Araújo facom.ufms.br/~andvicoso 2016
  2. 2. Roteiro  Introdução  O que é?  Motivação  Preparação  Prova  BOCA  Dicas  Estruturas de dados  Equipe  Erros comuns
  3. 3. Introdução Alongando os dedos...
  4. 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 ou todos em inglês  Existem duas etapas nacionais e a etapa internacional da competição  Pode render uma viagem...
  5. 5. Dados  Brasil:  Começou em 1996;  2014  643 times de 199 escolas em 41 sedes  Vencedores: USP SP, UFCG e UFRJ  Mundo:  Começou em 1977 nos EUA  2015  38.160 participantes de 2.534 universidades de 101 países (seis continentes)  Os vencedores dos últimos anos são China e Rússia
  6. 6. Dados (2)
  7. 7. Motivação  Você está estudando computação, você deveria gostar de programar  Se não gosta, pode estar 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, né?  Ganhar melhor ainda!  A maioria dos eventos tem premiação  Você disse viagens?  Algumas até em dinheiro! Uhuu!
  8. 8. Benefícios  Mantém o raciocínio afiado  Melhora as habilidades de programação  Facilita o entendimentos dos conteúdos do curso  Parece que com o tempo tudo fica mais fácil perto de problemas difíceis da Maratona  Destaque nacional ou internacional: Os melhores vão para as finais e as grandes empresas sabem disso!  Mas claro que tudo depende do treinamento...
  9. 9. Como Se Preparar  SPOJ (http://br.spoj.com)  URI Online (http://www.urionlinejudge.com.br)  CodeForces (http://codeforces.com)  POJ (http://poj.org)  UVa (http://uva.onlinejudge.org/)  TopCoder (http://community.topcoder.com)  CodinGame (http://www.codingame.com)
  10. 10. Prova Mandando bala!
  11. 11. Funcionamento da Maratona  Warmup  Tem 1 hora de duração  Em geral, apresenta só um problema fácil para ambientação das equipes, mas pode ter mais de um  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
  12. 12. 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
  13. 13. 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 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.
  14. 14. 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
  15. 15. Algoritmos e Estruturas de Dados  Grafos, pilhas, filas, listas, árvores, matrizes, vetores, …  Recursão, Ordenação, Programação Dinâmica, Algoritmos de Busca, …  Referências excelentes:  Algoritmos - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein  Competitive Programming 3, Steven Halim and Felix Halim
  16. 16. Trabalho em Equipe  Definam uma estratégia  Depende da composição da equipe  Caso tenha um problema que envolva geometria, e tenha um membro da equipe que tenha mais experiência no assunto, passe pra ele!  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  Lembrando que as estratégias não precisam ser fixas durante a prova
  17. 17. 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
  18. 18. Dicas Gerais  Comece a prova ordenando/definindo o nível de dificuldade de cada problema  Se estiver com dificuldade de ordenar, verifique o placar para ver quais problemas as outras equipes estão resolvendo/tentando resolver  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
  19. 19. Dicas Gerais (2)  Entradas e Saídas dos Problemas  Termine sempre as suas respostas com uma quebra de linha  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!
  20. 20. Submissões  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
  21. 21. 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;
  22. 22. Dicas TLE  Perto de 106 passos, o programa passa  107 passos tem de ser passos simples passar  108 normalmente não passa  Por exemplo,  se N vai até 100, o ideal é procurar uma solução O(N3) no máximo  se N vai até 1000, o ideal eh até O(N2)  ...
  23. 23. Treinamento  Roteiro: http://wiki.maratona.dcc.ufmg.br/  Monitor: Lucas Tsutsui (lucastsui@hotmail.com)  Professores com diferentes temas  Podemos ter mudanças de horários pontuais para cada professor  Vamos ter a seleção das equipes  Inicialmente a ideia é ter 3 equipes
  24. 24. Dúvidas? Boa Sorte! Let the carnage begin! (Rock 'N Roll Racing, 1993)

×