Para um principiante do ACM-ICPC, como devo começar?
A maioria das respostas aqui apontam lugares onde se pode resolver problemas. I'vou descrever uma abordagem para abordar os concursos de programação ACM que é um pouco diferente. Minha definição de um iniciante ACM é alguém que não fez um concurso regional ACM antes e não tem essencialmente nenhuma experiência em programação competitiva, então vou tentar cobrir mais detalhes desde começar a trabalhar em problemas ACM até competir em um concurso regional.Primeiro, fique confortável com um de C++ e Java. Você'tem permissão para usar C, C++, ou Java - usar C é mais provável que o impeça a longo prazo, portanto, familiarize-se com uma das outras duas linguagens. Você deve estar confortável o suficiente com a linguagem que você pode fazer algumas coisas simples. Em particular, você deve estar confortável com o seguinte:
- Leitura em dados de entrada padrão (o console), ou de um arquivo. Você deve aprender como fazer isso, já que isso's como a interação com o programa é feita.
- Operações aritméticas básicas com números inteiros assim como números reais.
- Operações básicas com strings, como extrair um substring ou reverter a string inteiramente.
- Arrays, iteração sobre um array, atualização de elementos em um array.
Asso que você tiver mais experiência, você pode aprender sobre estruturas de dados mais avançadas. Vetor, fila de prioridade, mapa e conjunto são alguns deles.
Após você sentir-se confortável com sua linguagem de programação de escolha, você deve começar a trabalhar em alguns problemas simples. Um bom número de recursos foi fornecido. I'vou destacar Codeforces (pode ser encontrado em Codeforces).
Este é o site que recomendo a todos os meus amigos que querem algum lugar para praticar programação, seja programação competitiva ou programação casual. Há algumas razões pelas quais este site é realmente agradável:
Para um, os problemas são todos de alta qualidade, e o número de vezes que um problema foi resolvido é um bom sinal de como o problema é fácil. Em outros sites (o Peking Online Judge encontrado em Welcome To PKU JudgeOnline vem à mente), o número de soluções é um sinal muito fraco de quão fácil é um problema.
Também, uma coisa muito boa sobre este juiz online que a maioria dos outros juízes não tem é a capacidade de ver em que caso de teste você falha. Logo no início da sua experiência de programação ACM, você'vai fazer alguns bugs que você'nunca viu antes, e ser capaz de olhar para o caso de teste em que você falhou pode ajudar muito se você'está preso tentando descobrir porque seu programa não funciona't. Com isso dito, você'vai conseguir muito mais com a depuração de um problema sem olhar para o caso de teste, porque isso'é precisamente o que você'vai estar fazendo em um ambiente de competição. Se você'estiver preso na depuração por mais de uma hora ou mais, dê uma olhada no caso de teste e veja porque seu programa não't funciona.
>p>Seu próximo trabalho será provavelmente se qualificar para representar sua universidade em um concurso regional. Para fazer isso, continue praticando a resolução de problemas. Você pode usar outros juízes online para prática adicional - veja as outras respostas para outros bons juízes online.Daqui, I'irá assumir que você'está a caminho das regionais.
Se você já viu't já viu, entenda o esquema de pontuação da ACM-ICPC. Em particular, perceba que ter muitas submissões erradas é indesejável. Vale sempre a pena codificar mais devagar e testar o seu código cuidadosamente antes de o submeter para evitar ter várias submissões erradas. Em uma competição real, nada é tão eficaz como não ver o veredicto Aceito para um programa que você acabou de enviar.
Você também pode tentar aprender psicologia de placar e fazer um pouco de pesquisa sobre outras equipes em sua região. Se uma equipe resolveu um problema, isso significa que o problema é resolúvel. Ignore as submissões erradas para outros problemas. Se uma equipe particularmente forte na sua região resolve um problema, isso pode não ser um bom sinal de que você possa fazê-lo, mas se muitas equipes começam a resolver um problema que você tem't resolvido, você deve definitivamente olhar para esse problema.
Após você'mais acostumado a resolver problemas de concursos, comece a trabalhar com uma equipe. Os concursos ACM são inerentemente concursos de equipes, e mesmo que você'não seja necessariamente a pessoa mais forte da sua equipe, você ainda pode definitivamente fazer uma contribuição (referência sem vergonha a Nick Wu'a resposta de Nick Wu'como é participar dos concursos ACM-ICPC, sabendo que você é o membro mais fraco da sua equipe e que seus colegas de equipe estão fazendo todo o trabalho por você? Você se sente envergonhado? Como é que você consegue?). Quando você começa a se preparar para os regionais, escolha sua equipe mais cedo e faça alguns concursos virtuais com eles. Você pode querer fazer competições regionais de anos anteriores da sua região. Faça regionais de outras regiões (desde que a dificuldade seja comparável - para simplificar, a maioria dos regionais da América do Norte são fáceis, para regionais mais difíceis, vá procurar na Europa ou na Ásia. O Concurso Regional do Nordeste Europeu (NEERC) é geralmente considerado como o concurso regional mais difícil do mundo).
Na sua equipe, descubra o seu papel entre os membros da equipe. Você se sai melhor com soluções, ou você é melhor/rápido na codificação? Cada pessoa deve fazer uma contribuição que melhor corresponda aos seus pontos fortes. Por exemplo, na minha equipe, I'sou a pessoa que está designada para codificar problemas particularmente pesados de implementação. Um dos meus colegas de equipe tem habilidades matemáticas mais fortes, então ele se concentra em resolver mais problemas matemáticos. Ter uma boa sinergia pode ser útil, então desenvolva-a antes e não durante um concurso real.
No dia do concurso, don't fique estressado. It'é muito fácil de se psicanalisar. Comece devagar, e lembre-se de tudo o que você'aprendeu. Aproveite essas 5 horas, porque essas 5 horas são algumas das horas mais emocionantes que você'vai experimentar.
Você'acabou de completar o seu primeiro concurso regional! Talvez tenha terminado mal, e você tinha um programa com bugs que você simplesmente não podia't consertar. Talvez tenha terminado bem, e você acabou de resolver esse problema nos segundos finais do concurso. Em qualquer caso, espere ansiosamente pelos resultados, e faça figas que você'irá para as finais mundiais. Mesmo se você não't, don'não leve isso muito a sério. O mundo ganhou'não acaba só porque você não'não vai às Finais Mundiais. Vá fazer algo divertido!
Artigos semelhantes
- Como enviar correio no Gmail a partir do meu endereço @acm.org
- Quero começar a praticar tiro com arco e flecha, mas nunca fiz um arco na minha vida. Que tipo de arco é o melhor para um principiante?
- Como é que um principiante deve começar com o Kaggle?
- Como novo criador de jogos indie, devo começar por desenvolver jogos para PC a vapor ou devo começar com jogos para telemóveis?
- Como desenvolver um jogo para celular/PC? Por onde devo começar para começar