Competitive programming
Campeonato aberto sobre programação Yandex . Algoritmo , 22 de agosto de 2013.
A programação competitiva é um esporte mental geralmente realizado pela Internet ou por uma rede local , envolvendo participantes que tentam programar de acordo com as especificações fornecidas. Os participantes são chamados de programadores esportivos . A programação competitiva é reconhecida e suportada por várias empresas multinacionais de software e Internet, como Google [1] [2] e Facebook . [3] Existem várias organizações que hospedam competições de programação regularmente.
Uma competição de programação geralmente envolve o host que apresenta um conjunto de problemas lógicos ou matemáticos aos competidores (que podem variar em número de dezenas a vários milhares), e os competidores são obrigados a escrever programas de computador capazes de resolver cada problema. O julgamento é baseado principalmente no número de problemas resolvidos e no tempo gasto para escrever soluções bem-sucedidas, mas também pode incluir outros fatores (qualidade da saída produzida, tempo de execução, tamanho do programa etc.)
Conteúdo
- 1 História
- 2 Visão geral
- 3 Competições Notáveis
- 4 Concurso online e recursos de treinamento
- 5 Veja também
- 6 Referências
- 7 Links externos
História
Um dos concursos mais antigos conhecidos é o ICPC, que se originou na década de 1970 e cresceu para incluir 88 países em sua edição de 2011. O interesse pela programação competitiva cresceu bastante [ quantificar ] desde 2000 e está fortemente conectado ao crescimento da Internet, o que facilita a realização de concursos internacionais on-line, eliminando problemas geográficos.
Visão geral
O objetivo da programação competitiva é escrever o código fonte dos programas de computador que são capazes de resolver determinados problemas. A grande maioria dos problemas que aparecem nos concursos de programação é de natureza matemática ou lógica. Típicos tais tarefas pertencem a uma das seguintes categorias: análise combinatória , teoria dos números , teoria dos grafos , geometria , análise de corda e estruturas de dados . Problemas relacionados à inteligência artificial também são populares em certas competições.
Independentemente da categoria do problema, o processo de solução de um problema pode ser dividido em duas etapas amplas: construir um algoritmo eficiente e implementar o algoritmo em uma linguagem de programação adequada (o conjunto de linguagens de programação permitidas varia de concurso para concurso). Essas são as duas habilidades mais testadas em competições de programação.
Na maioria dos concursos, o julgamento é feito automaticamente por máquinas host, comumente conhecidas como juízes. Toda solução apresentada por um competidor é executada no juiz contra um conjunto de casos de teste (geralmente secretos). Normalmente, os problemas do concurso têm um sistema de marcação de tudo ou nada, o que significa que uma solução é “Aceita” apenas se produzir resultados satisfatórios em todos os casos de teste executados pelo juiz e rejeitados de outra forma. No entanto, alguns problemas do concurso podem permitir pontuação parcial, dependendo do número de casos de teste aprovados, da qualidade dos resultados ou de outros critérios especificados. Alguns outros concursos exigem apenas que o competidor envie a saída correspondente aos dados de entrada fornecidos. Nesse caso, o juiz deve apenas analisar os dados de saída enviados.
Os juízes online são ambientes online nos quais os testes são realizados. Os juízes on-line têm listas de classificação que mostram aos usuários o maior número de soluções aceitas e / ou o menor tempo de execução para um problema específico. [4]
Competições notáveis
Existem dois tipos de formatos de competição: curto e longo prazo. Cada rodada da competição de curta duração dura de 1 a 5 horas. Competições de longo prazo podem durar de alguns dias a alguns meses.
Curto prazo
Concurso Internacional de Programação Colegiada (ICPC) - uma das competições mais antigas, para estudantes de universidades em grupos de 3 pessoas cada Liga Americana de Ciência da Computação (ACSL) - competição de ciência da computação com partes escritas e de programação, para alunos do ensino médio / médio CodeChef - competição realizada em 2009, há dois concursos curtos todos os meses [5] e uma competição anual chamada CodeChef SnackDown [6]
- Rodada de Codeforces - normalmente um concurso de duas horas, realizado toda semana [7]
- Facebook Hacker Cup - competição realizada em 2011, fornecida e patrocinada pelo Facebook
- HackerRank - várias competições [8]
- Google Code Jam - concurso realizado em 2003, fornecido e patrocinado pelo Google
- Concurso de programação IEEEXtreme - concurso anual para estudantes membros do IEEE, realizado desde 2006 pelo IEEE
- IOI - uma das competições mais antigas, para alunos do ensino médio
- Olimpíada Nacional de Informática , China - competição realizada na China desde 1984
- Topcoder Open (TCO) - Algoritmo - competição realizada desde 2001 pela Topcoder
Na maioria das competições acima, como o número de competidores é bastante grande, as competições geralmente são organizadas em várias rodadas. Eles geralmente exigem participação on-line em todas as rodadas, exceto a última, que exige participação no local. Uma exceção especial a isso é o IEEEXtreme, que é um concurso anual de programação virtual de 24 horas. Os melhores desempenhos da IOI e da ACM-ICPC recebem medalhas de ouro, prata e bronze, enquanto nas outras competições, prêmios em dinheiro são concedidos aos melhores finalistas. Também alcançar os primeiros lugares nas tabelas de pontuação de tais competições pode atrair o interesse de recrutadores de empresas de software e Internet.
Longo prazo
- Semana do código do HackerRank [9]
- Concurso de programação ICFP - competição anual de três dias realizada desde 1998 pela Conferência Internacional sobre Programação Funcional
- Topcoder Marathon Matches
Inteligência artificial e aprendizagem de máquina
- Kaggle - competições de aprendizado de máquina.
- CodeCup - competição de jogos de tabuleiro de IA realizada anualmente desde 2003. As regras do jogo são publicadas em setembro e o torneio final é realizado em janeiro. [10] [11] [12]
- Google AI Challenge - competições bianuais para estudantes de 2009 a 2011
- Halite [13] - Um desafio de programação de IA patrocinado pela Two Sigma, Cornell Tech [14] e Google [15]
- Copa da AI russa abre concurso de programação de inteligência artificial
Concurso on-line e recursos de treinamento
A comunidade de programação em todo o mundo criou e manteve vários recursos da Internet dedicados à programação competitiva. Eles oferecem concursos autônomos com ou sem prêmios menores. Também os arquivos anteriores de problemas são um recurso popular para treinamento em programação competitiva. Esses incluem:
Name | Description | Website |
---|---|---|
CodeChef | Maintained by Directi, it hosts a 10-day-long contest and a couple of short contests every month (one IOI styled and other ACM ICPC styled), and provides a contest hosting platform to educational institutions for free. The top two winners of the long contest win cash prizes while the top 10 global get a tee-shirt. | www |
CodeCup | Annual international AI board game programming competition organized by the Dutch Olympiad in Informatics since 2003.[11][12] | codecup |
Codeforces | Russian resource, maintained by ITMO University, which mostly provides frequent (up to two per week) short contests. Special features: ability to check correctness of other contestants' solutions during "hacking phase", virtual contests, trainings etc. | codeforces |
CodinGame | Puzzles (increasing difficulty), code golf. Hosts regular online competitions (AI сhallenges, optimization problems) | www |
HackerEarth | Bangalore, India based company providing online contest like environment aiming at providing recruitment assessment solutions. | www |
HackerRank | HackerRank offers programming problems in different domains of Computer Science. It also hosts annual Codesprints which help connect the coders and Silicon Valley startups. | hackerrank |
Project Euler | Large collection of computational math problems (i.e. not directly related to programming but often requiring programming skills for solving). | projecteuler |
Topcoder | US resource and company, which organizes contests and also provides industrial problems as a kind of free-lance job; it offers dozens of short contests and several long ("marathons") every year. Specific feature - participants have a chance to check correctness of other contestants' solutions after coding phase and before final automatic testing (so called "challenge phase"). | www |
UVa Online Judge | Contains over 4,500 problems for practising. Hosts regular online competitions. | uva |
AtCoder | Based in Japan, Atcode offers online programming contests on a weekly basis. The contests are offered in the Japanese and English language. | www |
LeetCode | Contains over 1,000 problems for practice and offers weekly and biweekly programming contests. | www |
Veja também
- Code golf
Referências
- “Google Code Jam” . google.com . Página visitada em 20/02/2016 .
- “Patrocinador TCO12: Google - TCO 12” . topcoder.com . Arquivado a partir do original em 16 de fevereiro de 2012.
- “Copo do hacker de Facebook” . Facebook . Página visitada em 20/02/2016 .
- Desafios de programação (Skiena & Revilla) ISBN 0387001638 , ISBN 978-0387001630
- “Concursos mensais do CodeChef” .
- “Programadores de todo o mundo competem no CodeChef SnackDown - ExchangeMedia” .
- “Codeforces concursos” . Página visitada em 2018-10-12 .
- “Problemas de programação e competições :: HackerRank” . HackerRank . Página visitada em 20/02/2016 .
- “Problemas de programação e competições :: HackerRank” . HackerRank . Página visitada em 20/02/2016 .
- “CodeCup” . www.codecup.nl .
- Lasse Hakulinen. Pesquisa sobre Competições de Informática: Desenvolvimento de Tarefas - Olympiads in Informatics, 2011, vol. 5, 12–25.
- Wevers, Lesley (2014). “Pesquisa em árvore de Monte-Carlo para Poly-Y” (PDF) . Universidade de Twente . Arquivado a partir do original (PDF) em 13 de abril de 2017 . Consultado em 16 de setembro de 2018 .
- “Desafio de programação da inteligência artificial halita” . www.halite.io .
- Dois Sigma anuncia o lançamento público de Halite . tech.cornell.edu .
- “O Halite ajuda estudantes e desenvolvedores a competir para criar uma melhor IA no Google Cloud Platform” .
Links externos
Projeto de código aberto para a execução de concursos
Sistema de gerenciamento de concursos Ferramenta de código aberto em Python para executar e gerenciar um concurso de programação em um servidor IOI 2012 e IOI 2013 .
Programação Competitiva
” O International Collegiate Programming Contest (ICPC) “ é um concurso para estudantes de faculdades e universidades de todo o mundo. Ele testa a capacidade dos jogadores de projetar algoritmos e programas no local.
O ICPC impulsionou a tendência da programação de algoritmos. Os departamentos de informação de muitas faculdades e universidades do mundo, seguindo o modelo de competição do ICPC, desenvolveram seus próprios sistemas de competição on-line em tempo real, que podem marcar, pontuar, tempo e estatísticas automaticamente. Os alunos não precisam ficar juntos, eles podem aprender habilidades de programação pela Internet. Após a competição, as perguntas da competição serão compiladas em um banco de perguntas e a função do programa de correção automática será aberta para os alunos praticarem a revisão após a competição. Este sistema é chamado de “juiz online”.
Ao se envolver nessa atividade, você pode não apenas estar familiarizado com programação, aprender algoritmos e treinar sua inteligência, mas também desenvolver a capacidade de aprender de forma independente e resolver problemas de forma independente - esse é o valor principal dos programadores. Portanto, essa atividade ganhou gradualmente a atenção de todos. O setor realiza competições de algoritmos para encontrar talentos excelentes; os círculos acadêmicos oferecem cursos para promover o desenvolvimento de algoritmos. Essa atividade é chamada “ Programação Competitiva “.
Concurso Internacional de Programação Colegiada
O ICPC é a maior e mais antiga competição na indústria da informação. Desde 1977, competições preliminares são realizadas todos os anos em todo o mundo, e equipes com desempenhos extraordinários são selecionadas para competir nas Finais Mundiais. Nas competições recentes, milhares de escolas e dezenas de milhares de concorrentes participaram.
O ICPC é uma competição animada. Todo o evento inclui muitas atividades.Claro, o eixo principal é um jogo de computador ao vivo, mas também há shows de entretenimento, jantares, passeios pela cidade e assim por diante. Todo o processo de competição durou de dois a três dias. Havia mais para comer e brincar. Havia mais componentes de diversão do que competições. Foi uma experiência muito nova para os competidores.
A competição do ICPC é composta por uma equipe de três homens e requer um professor como treinador líder. O principal papel do treinador é estar encarregado de entrar em contato com o evento com a conferência e fornecer aos jogadores detalhes da vida durante o evento, para que os jogadores possam jogar sem preocupações. O treinador age como um corretor.
Competição de informática no local, todas as equipes se reuniram no local, uma equipe designou uma mesa, três cadeiras, um computador e um título em inglês. Depois que o anfitrião anuncia o início do jogo, todas as equipes começam a responder ao mesmo tempo.Os jogadores devem ler rapidamente as perguntas no livro de perguntas, depois escrever um programa para resolver o problema e carregar o código no árbitro para correção.
Todas as respostas são corrigidas em tempo real e os resultados são respondidos em alguns minutos.Os resultados são apenas certos e errados.Você pode responder a resposta errada novamente. O método de cálculo da pontuação é baseado no número de respostas corretas, mas o número de respostas incorretas e o tempo de carregamento das respostas estão todos incluídos nos pontos de dedução como base secundária de classificação. Portanto, os jogadores devem tentar o seu melhor para responder às perguntas, e devem responder às perguntas o mais rápido possível. Para equipes com força no meio, a diferença entre vitória e derrota geralmente depende da eficiência de examinar e responder a perguntas. Movimentos lentos ou erros descuidados provavelmente darão nome a si mesmos.
Os competidores têm cinco horas para resolver cerca de dez problemas algorítmicos.Nesse período, eles podem beber água, ir ao banheiro, saborear os lanches de luxo fornecidos pela conferência, rabiscar o título, remover o guindaste de origami, dormir, conversar. Amar e jogar jogos de computador; a única limitação é não se comunicar com pessoas de fora da equipe.
As regras do jogo parecem frívolas, mas o processo é realmente muito urgente. Cinco horas para resolver dez problemas, mas apenas um computador. Até jogadores altamente qualificados quase não têm tempo para descansar e precisam trabalhar juntos para ganhar tempo. Normalmente, uma pessoa fica na frente do computador para responder a qualquer momento, fazendo pleno uso do computador e exercendo a pontualidade; as outras duas estão lendo o restante das perguntas, tecendo soluções em seus cérebros, esperando a oportunidade de se revezar. Durante a competição de cinco horas, os jogadores superam as restrições ambientais, ajustam a pressão psicológica e exercem seu potencial cerebral.Também pode ser considerado uma competição mental.
Ainda existem muitos lugares interessantes no processo da competição, deixe que os competidores experimentem por si mesmos!
Notícias oficiais do ICPC: ICPCNews
ICPC Ásia: blog de Xijie Axiong
Notícias não oficiais japonesas: Grupo japonês de ex-alunos do ACM-ICPC
Notícias não oficiais chinesas: Estação de informações do ACM / ICPC
Impressões dos jogadores: Concurso Regional de Jacarta do ACM-ICPC Ásia 2017 Registros ao longo do caminho Experiências
Impressões de treinadores: Finais Mundiais do ACM-ICPC de 2016 - log da MZ
Perguntas em destaque: Sobre o Diário de 2019
Perguntas do calendário: ICPC Live Archive
De acordo com os regulamentos, as competições regionais do ICPC devem ter preliminares nacionais (ou mais de duas províncias). Taiwan sempre usou o NCPC como rodada preliminar, mas, na verdade, o NCPC não é uma rodada preliminar. Esse fenômeno ocorre porque o número de equipes participantes em Taiwan é muito pequeno e é impossível selecionar equipes. Até 2015, Taiwan começou a realizar formalmente preliminares on-line, seguindo os padrões de concorrência dos países asiáticos.
-
Preliminares regionais (competição pela Internet): O líder do ICPC Taiwan organiza a competição e os professores de faculdades e universidades prestam assistência calorosa. Jogadores em casa e no exterior competiram pela Internet. Após o jogo, 40 a 80 equipes são selecionadas para participar da partida ao vivo com base na eficácia de combate do contratado naquele ano. Como as equipes estrangeiras precisam de tempo para se preparar para uma partida ao vivo no exterior, os jogos on-line costumam ser realizados cedo e serão realizados de 3 a 6 meses atrás.
-
Competição nacional: Não tem nada a ver com o ICPC. O NCPC hospedado pelo Ministério da Educação de Taiwan competiu com estudantes de todo o país. Para equipes de destaque, o Ministério da Educação subsidia totalmente a participação no ICPC.
Competições oficiais regionais (competições ao vivo): consulte o conteúdo apresentado anteriormente: jogadores nacionais e estrangeiros se reúnem para competir. Após a competição, o organizador avalia a eficácia do combate de cada competição regional de acordo com uma fórmula complicada e seleciona pelo menos uma equipe para participar das Finais Mundiais.
Quarto, as Finais Mundiais: Mais de 100 equipes serão selecionadas de todo o mundo para participar das finais, e uma escola dos cinco continentes será selecionada como sede da competição. As faculdades e universidades de Taiwan eram fracas no passado e sempre eram abatidas por escolas estrangeiras e raramente chegavam às finais. Somente nos últimos dez anos houve sinais de melhoria, com as escolas estrangeiras avançando e recuando (resultado de anos de esforços meticulosos de um grupo de heróis desconhecidos); ao mesmo tempo, eles também participaram ativamente de competições regionais em outros países para ganhar ingressos para as Finais Mundiais. Atualmente, apenas a Universidade de Taiwan e a Universidade de Jiaotong, em Taiwan, podem participar das finais.
Competição de algoritmos
Abreviação do Concurso Internacional de Programação Colegiada: ICPC Objeto: Alunos do ensino superior (bacharelado do primeiro ao mestrado do primeiro ano) Horário: Estação de Taiwan novembro-dezembro As estações asiáticas são de agosto a dezembro As Finais Mundiais são realizadas entre maio e julho : Organizadores da Fundação ICPC: As divisões de Taiwan são organizadas por universidades de Taiwan, por sua vez | |
2019TW , 2018TW , 2017TW | |
Alvo do Google Code Jam: The Masses: abril a julho | |
TopCoder Open Target: Período público: uma vez por ano, há uma grande variedade de competições, uma das quais é uma competição por algoritmos. | |
Facebook Hacker Cup Público: Era Social: uma vez por ano, tempos incertos | |
Taipé | Meta HP CodeWars: Escola profissional de nível médio (notas 1 a 3) Período do aluno: uma vez por ano, o tempo é incerto |
Objetivo do Concurso de Programação ACM SIGMOD: Estudantes universitários Período: fevereiro a abril | |
NCPC | Abreviação do Concurso Nacional de Design de Software para Computadores da Faculdade: NCPC Alvo: Taiwan College Students Horário: setembro-outubro Organizado por: Taiwan Normal University e Sun Yat-Sen |
2019 , 2018 , 2017 | |
NCPU | Abreviação de concurso nacional para faculdades e universidades nacionais: NCPU Objetivo: Estudantes de faculdades particulares de Taiwan Horário: junho Organizado por: faculdades particulares Rotate Observações: Evento derivado da estação ICPC de Taiwan |
2019 , 2018 , 2017 | |
NCTU | Abreviação de Concurso Nacional do Programa Universitário de Ciência e Tecnologia: NCTU Objeto: Universidade de Ciência e Tecnologia de Taiwan Horário do aluno: junho Organizador: Universidade de Ciência e Tecnologia de Huwei Nota: Evento Derivativo da Estação ICPC de Taiwan |
2019 , 2018 , 2017 | |
NPSC | Abreviação de Competição Nacional de Programação da Internet: NPSC Alvo: estudantes do ensino médio de Taiwan e estudantes do ensino médio Período: novembro a dezembro Organizado por: Universidade de Taiwan |
Competição de algoritmos
- TopCoder , Introduçãoao maior site de concursos de programas dos Estados Unidos, incluindo concursos algorítmicos.
- Codeforces O maior torneio algorítmico da Rússia.
- CodeChef - Maior competição de algoritmos da Índia.
- AtCoder - Maior competição de algoritmos do Japão.
- ITSA & PTC Online Programming Competition - Maior competição de algoritmos de Taiwan. Eventos regulares fornecidos pelo Ministério da Educação de Taiwan.
- Diário da Corrida - Competições regulares organizadas por estudantes de Taiwan.
Algorithm Question Bank
Kattis | Juiz Online estabelecido pela empresa sueca Kattis. |
URI Online Judge | Juiz on-line da Universidade do Alto Uruguai e das Missões, Brasil. |
Sphere Online Judge | Juiz Online criado pelo Sphere Labs, Polônia. |
Juiz Online da HDU | Juiz Online, Universidade de Hangzhou Dianzi, China. |
Timus Online Judge | Juiz Online da Universidade de Ural, Rússia. |
UVa Online Judge | Juiz on-line na Universidade de Valladolid, Espanha. O mais antigo Juiz Online. |
ZeroJudge | um sistema de solução de programas para estudantes do ensino médio Juiz on-line estabelecido pela High School da Universidade Normal de Kaohsiung, em Taiwan. |
Site de ferramentas para UVa Online Judge
uHunt | Você pode verificar seu progresso e classificação mundial no UVa Online Judge.Organizou uma lista de perguntas, adequadas para iniciantes praticarem passo a passo. Digite seu nome de usuário e ele aparecerá. |
uDebug | Forneça um arquivo executável da solução UVa Online Judge.Digite seus próprios dados para gerar a saída correta para testar seu programa. |
Lucky ACM , Ruby ACM , Unfortunate ACM, uniDog ACM | Tradução do título do UVa Online Judge!Muito bom trabalho, por favor, seja grato! |
Classificação de Problemas no Arquivo em Espanhol | Classificação de tópicos. |
Treinamento de programação
- Os 10 melhores sites de desafio de codificação para 2018 Introdução abrangente.
- Exame de Habilidade de Programação de Computador PAT Exame de licença da China.
- Teste de Capacidade do Programa Universitário CPE Alguns professores de Taiwan se uniram para um exame de licença. Você entende.
Campo de Competição de Algoritmo
-
Acampamento de inverno do treinamento atlético da Universidade de Jiaotong, acampamento de verão. Professores e alunos entusiasmados gerenciam automaticamente o acampamento. Materiais didáticos gratuitos e abertos.
-
Campo de treinamento da competição do programa de verão de Tsinghua. Estudantes entusiasmados gerenciam automaticamente o acampamento. Taxas e materiais não são divulgados.
-
Campo de Treinamento do Concurso de Resolução de Programas da Universidade de Taiwan. Estudantes entusiasmados gerenciam automaticamente o acampamento. Livros didáticos pagos e não divulgados também atraem patrocínios corporativos. Você entende.
Notas da Aula sobre Competição de Algoritmos
-
Palestra sobre Algoritmo da Agência de Informação da Escola Secundária Banqiao. Alunos entusiasmados trabalham duro para compilar o livro.
-
Palestra de Treinamento do Curso de Informações da Escola Secundária Jianguo. Alunos entusiasmados trabalham duro para compilar o livro.
-
Notas do curso PSPT da Universidade de Jiaotong. Professor entusiasmado trabalha duro para compilar o livro.
-
Notas de aula para os cursos da ACM na Success University. Professores e alunos entusiasmados trabalham duro para compilar o livro.
-
OI Wiki Os entusiastas da Internet trabalham duro para compilar o livro.
-
Stanford CS 97SI: Introdução aos concursos de programação competitiva Estudantes entusiasmados trabalham duro nos cursos.
-
CMU CS 15-295: Programação da competição e solução de problemas O trabalho duro do professor entusiasmado.
-
Manual do Programador Competitivo Materiais de treinamento da equipe nacional IOI da Finlândia
-
Biblioteca Pública da OI Relatório Técnico da Equipe Nacional da China IOI
Livros de competição de algoritmo
-
Pensamento matemático Editora Jiuzhang
-
Como resolvê-lo George Pólya Tradução “Como resolver problemas”
-
Programação Competitiva Felix Halim, Steven Halim Obras-primas da competição de algoritmo de Cingapura
-
Guia de Programação Competitiva: Aprendendo e melhorando algoritmos através de concursos Antti Laaksonen Obras-primas da competição finlandesa de algoritmos
-
프로그래밍 대회 에서 배우는 알고리즘 문제 해결 구종 만 Obras-primas do concurso de algoritmo coreano Tradução de “Algoritmos para problemas algorítmicos”
-
プ ロ グ ラ ミ グ コ ン テ ト チ ャ レ ン ジ ブ ッ. Iwata Akiba Takuya, Kitagawa Eki, Yoichi Obras-primas do concurso de algoritmo japonês Tradução “Cultivando e praticando o cérebro lógico da programação: compartilhando conhecimento, experiência e solução de problemas em um concurso de programação de classe mundial”
-
Clássico de entrada no concurso de algoritmo Liu Rujia Obras-primas do concurso de algoritmo chinês Tradução “Lançando boas bases: uma introdução clássica a concursos de programação e algoritmos”
-
Guia de treinamento clássico sobre entrada em competição de algoritmo Chen Feng Liu Rujia Obras-primas do concurso de algoritmo chinês Tradução de “Melhorando a resolução de problemas de pensamento na programação: um guia de treinamento para a competição internacional de programação de algoritmos”
Livros do concurso de algoritmos: Novos livros que não li
- Guia Avançado de Competição de Algoritmos
- Olimpíada da Informática
- Programação de computador CCF para alunos do ensino médio
Links relacionados ao concurso de algoritmo
-
Awesome Competitive Programming Série impressionante no github, não importa a bagunça.
-
Consolidação de recursos relacionados ao treinamento de informações em Taiwan Consolidação de recursos relacionados ao treinamento de informações com base em estudantes do ensino médio de Taiwan.
Awesome Competitive Programming
A curated list of awesome Competitive Programming
, Algorithm
and Data Structure
resources.
Created with a view to connecting people to information, this list below contains a complete collection of all the fantastic resources I’ve collected over the course of my 11-year competitive programming career. I hope you’ll find it useful :)
What is competitive programming? - Quora
Contributing
Please kindly follow CONTRIBUTING.md to get started.
You can also contribute by sharing!
Share the list with your classmates, your friends and everyone :)
By connecting more people to information,
You, are doing not me, but everyone a HUGE favor!I really hope that more people can benefit from this list :)
Table of Contents
- List of Lists
- Syllabuses
- Tutorial Websites
- Open Courses
- Books
- Sites for Practice
- Camps and Trainings
- Sites for Questions
- Implementations
- Language Specifics
- Tools
- Community
- Other Awesome Resources
- License
List of Lists
Awesome curated lists classified by topics.
☆ | Name | Description |
---|---|---|
★★★ | Good Blog Post Resources about Algorithm and Data Structures - Codeforces | A collection of fantastic tutorial blog posts written by Codeforces users. Some intriguing ones include Palindromic Trees, Policy Based Data Structures, and a lot more. |
★★★ | All of the good tutorials found on codeforces - Codeforces | Another good collection of tutorial blog posts written by Codeforces users. |
★★★ | Data Structures and Algorithms - CodeChef Discuss | A very complete list of competitive programming resources. A must-have in your browser bookmark. |
★★★ | How to prepare for ACM - ICPC? - GeeksforGeeks | A detailed walk-through of the preparations for ACM-ICPC. |
Syllabuses
Find out what topics you need to learn.
☆ | Name | Description |
---|---|---|
★★★ | IOI Syllabus | A detailed syllabus on which IOI contestants will be tested. This is still somewhat relevant to ACM-ICPC. |
★★★ | How to prepare for ACM - ICPC? - GeeksforGeeks | A detailed walk-through of the preparations for ACM-ICPC. |
★★☆ | Programming Camp Syllabus | A list of important topics in competitive programming with exercise problems. |
★★☆ | Juniors Training Sheet, by Mostafa Saad Ibrahim | ~800 ordered problems for newcomers to be good up to Div2-D |
Tutorial Websites
Awesome websites with great tutorials.
☆ | Name | Description |
---|---|---|
★★★ | Topcoder Data Science Tutorials | A list of tutorials written by respected Topcoder members. Many top programmers started learning data sciences from here. |
★★★ | E-Maxx (Russian), (English) | A tutorial website widely used and referenced in the Russian-speaking competitive programming community. Most of the articles of the original site have been translated into English, Google Translate works okay for the remaining ones. |
★★☆ | Algorithms - GeeksforGeeks | A website with a large archive of nicely written articles on different topics. It is a great complimentary resource for algorithm courses. |
★★☆ | PEGWiki | A website with amazing in-depth wiki-like writeups on many topics. It’s far better than those on Wikipedia in my opinion. |
★★☆ | Notes - HackerEarth | A great crowdsourcing platform for tutorials. Also visit Code Monk. |
★★☆ | USA Computing Olympiad (USACO) | Contains several training pages on its website which are designed to develop one’s skills in programming solutions to difficult and varied algorithmic problems at one’s own pace. |
★★☆ | basecs | A blog with in-depth, illustrated tutorials on basic algorithms and data structures. |
★★☆ | Competitive Programming - Commonlounge | Short video tutorials for beginner and intermediate concepts. Advanced tutorials selected from the best ones available on various CP blogs. |
★☆☆ | OLYMPIADS IN INFORMATICS | An international journal focused on the research and practice of professionals who are working in the field of teaching and learning informatics to talented student. |
★☆☆ | algolist (Russian) | A Russian website devoted to algorithms of all sorts. Some topics listed on this website seems pretty interesting. |
★★☆ | 演算法筆記 (Algorithm Notes) (Chinese) | One of the most popular tutorial websites among the Taiwanese competitive programming community. The maintainer for this website spends immense efforts on researching algorithms. |
★★☆ | 国家集训队论文 1999-2015 (Papers from Chinese IOI training camps) (Chinese) | Papers from the Chinese IOI training camps. It’s interesting for the fact that one can tell different regions emphasize different things. |
★★★ | Mini-Editorials, by Mostafa Saad Ibrahim trainees | Solutions with mini-editorials for many problems, including UVA/SPOJ/IOI/Olympiad problems |
Open Courses
Consider beginning your competitive programming journey with these awesome courses!
☆ | Name | Description |
---|---|---|
★★☆ | Code Monk, by HackerEarth | A fantastic step-by-step tutorial on the essential topics in competitive programming. |
★★★ | Stanford CS 97SI: Introduction to Competitive Programming Contests | Offers comprehensive lecture slides and a short list of exercise problems. |
★★☆ | How to Win Coding Competitions: Secrets of Champions | A course by ITMO University on competitive coding on edX. |
★★☆ | Codechef’s Indian Programming Camp | Video Lectures from Codechef’s Indian Programming Camp 2016. Lectures given by top competitive programmers like Sergey Kulik, Kevin Charles Atienza and Anudeep Nekkanti. Primarily focused on exploring these concepts by applying them to actual competitive contest problems. |
★★☆ | Reykjavik T-414-ÁFLV: A Competitive Programming Course | An awesome course taught by Bjarki Ágúst Guðmundsson (SuprDewd). These lectures feature neat slides and a nice list of problems to practice. |
★★☆ | NCTU DCP4631: Problem Solving and Programming Techniques | A course on basic topics featuring good lecture slides. |
★☆☆ | Materials (English) from Arabic Competitive Programming Youtube Channel | Some materials (slides & source codes) covering a broad range of algorithmic topics by Mostafa Saad Ibrahim. |
Open Courses for Algorithms and Data Structures
☆ | Name | Description |
---|---|---|
★★★ | prakhar1989/awesome-courses#algorithms | A fantastic list of open courses offered by notable institutions (MIT, Stanford, UC Berkeley … etc.). |
★★★ | MIT SMA 5503: Introduction to Algorithms | Lectured by Prof. Charles Leiserson (one of the coauthors of Introduction to Algorithms) and Prof. Erik Demaine (a brilliant professor who has made remarkable breakthroughs in data science), the course offers great materials, accompanied by intuitive and comprehensive analyses. |
★★☆ | UIUC Algorithm Course | lecture notes, homeworks, exams, and discussion problems covering a broad range of algorithmic topics |
Books
A list of recommended books for competitive programming.
☆ | Name | Description |
---|---|---|
★★☆ | Competitive Programming, by Steven and Felix Halim | This book contains a collection of relevant data structures, algorithms, and programming tips. It’s a well-received book. … The first edition is free for download (pdf). |
★★☆ | Programming Challenges: The Programming Contest Training Manual, by Steven Skiena and Miguel Revilla | This book includes more than 100 programming challenges, as well as the theory and key concepts necessary for approaching them. Problems are organized by topic, and supplemented by complete tutorial material. |
★★☆ | Competitive Programmer’s Handbook, by Antti Laaksonen | An introduction to competitive programming for aspiring IOI and ICPC contestants. Free to download (pdf). |
★★☆ | Computational Geometry: Algorithms and Applications, by Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars | This is a well-written book which covers a broad range of computational geometry problems. |
★☆☆ | The Hitchhiker’s Guide to the Programming Contests, by Nite Nimajneb | This book is free for download (pdf). This book covers various topics relevant to competitive programming. |
★★★ | プログラミングコンテストチャレンジブック (Japanese), by 秋葉拓哉, 岩田陽一, 北川宜稔 | An absolutely phenomenal book. The contents, organized in a very coherent manner, are nothing short of amazing. … 培養與鍛鍊程式設計的邏輯腦:世界級程式設計大賽的知識、心得與解題分享 (Chinese Traditional) |
★★☆ | 算法竞赛入门经典 (Chinese), by 刘汝佳 | The Art of Algorithms and Programming Contests (English), 打下好基礎:程式設計與演算法競賽入門經典 (Chinese Traditional) |
★★☆ | 算法竞赛入门经典——训练指南 (Chinese), by 刘汝佳, 陈锋 | 提升程式設計的解題思考力─國際演算法程式設計競賽訓練指南 (Chinese Traditional) |
★★★ | 算法艺术与信息学竞赛 (Chinese), by 刘汝佳, 黄亮 | An old-time classic. It’s old but the contents in this book are still considered to be very difficult by today’s standards. |
Books for Algorithms
☆ | Name | Description |
---|---|---|
★★★ | Introduction to Algorithms, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein | Also known as CLRS (taken from name initials), this book is often referred to as the “bible” for algorithms and data structures. It’s one of the most popular textbooks for university algorithm courses. This book covered various algorithms and data structures in great detail. The writing is more rigorous and can be difficult to some. |
★★☆ | Algorithm Design, by Jon Kleinberg and Éva Tardos | This book revolves around techniques for designing algorithms. It’s well-organized and written in a clear, understandable language. Each chapter is backed with practical examples and helpful exercises. The chapter on network flow is highly praised by lots. … The lecture slides that accompany the textbook are available on its official website. |
★★☆ | The Algorithm Design Manual, by Steven S. Skiena | The book is written in more readable text. Some find it comprehensive than other books. You can also find some good resources (including the author’s own video lectures) on its official website. |
★★★ | Algorithms, by Robert Sedgewick and Kevin Wayne | This book is neatly categorized, coupled with elaborate explanations and fantastic illustrations. It is used in some IOI training camps as a textbook. |
Books for Mathematics
☆ | Name | Description |
---|---|---|
★★☆ | Discrete Mathematics and Its Applications, by Kenneth H. Rosen | Discrete Mathematics is closely relevant to competitive programming. This book provides comprehensive materials on a wide range of topics including: Logics and Proofs, Sets, Functions, Sequences, Matrices, Number Theory, Recursion, Counting, Probablity, Graphs, Trees and Boolean Alegra to name but a few. |
★★☆ | Concrete Mathematics: A Foundation for Computer Science, by Ronald L. Graham, Donald E. Knuth, Oren Patashnik | The book offers a deeper insight into Discrete Mathematics with more emphases on number-related topics. |
★★☆ | Linear Algebra and Its Applications, by David C. Lay, Steven R. Lay, Judi J. McDonald | The book does a brilliant job at bridging the gap between a physical system (for scientists and engineers) and an abstract system (for mathematicians). |
★★☆ | Introduction to Probability, by Charles M. Grinstead, J. Laurie Snell | This is a well-written introductory probabilities book. … It’s free for download (pdf) (released under GNU Free Documentation License). |
★★☆ | How to Solve It: A New Aspect of Mathematical Method, by G. Polya | An old-time classic. In this book, the author provides a systematic way to solve problems creatively. |
★★☆ | Intermediate Counting & Probability, by David Patrick | Topics in counting and probability byformer USA Mathematical Olympiad winner David Patrick , topics include inclusion-exclusion, 1-1 correspondences, the Pigeonhole Principle, constructive expectation, Fibonacci and Catalan numbers, recursion, conditional probability, generating functions, graph theory, and much more.. |
Sites for Practice
Good online judge systems / contest platforms to practice.
☆ | Name | Description |
---|---|---|
★★★ | Codeforces | Codeforces is one of, if not, the most popular contest platforms out there. Currently maintained by Saratov State University, it features regular contests and countless awesome original problems. Additionally, every contest provides immediate helpful tutorials (usually) written by the authors themselves. Codeforces also houses a strong and engaging community. All in all, one would indeed learn and improve tremendously here. |
★★★ | Topcoder | Topcoder has been around since 2001. Rich in history, It’s considered to be one of the most prestigious organizations when it comes to technology competitions. Hundreds of SRMs gave birth to an abundant problemset. Problems here are typically more challenging than others and Topcoder therefore appeals to many elite programmers. The annual Topcoder Open (TCO) is also a widely-discussed event. |
★★★ | Google Code Jam | Google Code Jam is certainly one of the most highly-esteemed programming competitions. The competition consists of unique programming challenges which must be solved in a fixed amount of time. Competitors may use any programming language and development environment to obtain their solutions. |
★★★ | AtCoder | AtCoder is a new but phenomenal contest platform created by a team of highly-rated Japanese competitive programmers. |
★★☆ | CodeChef | CodeChef is a non-profit educational initiative of Directi. It’s a global competitive programming platform and has a large community of programmers that helps students and professionals test and improve their coding skills. Its objective is to provide a platform for practice, competition and improvement for both students and professional software developers. Apart from this, it aims to reach out to students while they are young and inculcate a culture of programming in India. |
★★★ | SPOJ | The SPOJ platform is centered around an online judge system. It holds a staggering amount of problems prepared by its community of problem setters or taken from previous programming contests, some of which are great problems for practice (refer to the Problem classifiers section). SPOJ also allows advanced users to organize contests under their own rules. |
★★☆ | Timus | Timus Online Judge is the largest Russian archive of programming problems with automatic judging system. Problems are mostly collected from contests held at the Ural Federal University, Ural Championships, Ural ACM ICPC Subregional Contests, and Petrozavodsk Training Camps. |
★☆☆ | HDU | HDU is an online judge maintained by Hangzhou Dianzi University. It’s home to many classic problems from the Chinese IOI scene. |
★★☆ | Aizu Online Judge | Aizu online judge is a contest platform and problem archive hosted by The University of Aizu. It has a lot of great problems from programming competitions in Japan. |
★★☆ | UVa | An old-school problem archive / online judge with rich history. Thousands of problems, including many classic ones, are featured here. However, it is strongly advised that you practice with uHunt following its “Competitive Programming Exercise” section. |
★★☆ | HackerRank | HackerRank is a company that focuses on competitive programming challenges for both consumers and businesses. HackerRank’s programming challenges can be solved in a variety of programming languages and span multiple computer science domains. |
★★☆ | POJ | POJ is an online judge with many great problems maintained by Peking University. Most Chinese competitive programmers began their journey here. The platform is really dated so mysterious compilation and run-time issues may occur. |
★★☆ | Project Euler | Project Euler features a stunning set of good math problems. It also hosts a forum where people can discuss. |
★☆☆ | Hackerearth | HackerEarth is a startup technology company based in Bangalore, India that provides recruitment solutions. |
★☆☆ | Caribbean Online Judge | COJ is hosted by University of Informatics Sciences (UCI, by its acronym in Spanish), located in Cuba. Feature ACM ICPC and Progresive constest styles, mostly from Caribbean and Latin American problem setters, also has problem classifier and contest calendar. |
★★☆ | CS Academy | New in the competitive programming scene, CS Academy is a growing online judge that hosts competitions once every two weeks. It supports live chat, interactive lessons and an integrated online editor (that actually works). |
★★☆ | Russian Code Cup | Programming competitions powered by Mail.Ru Group. Competition consists of 3 qualification, 1 elimination and 1 final rounds. For each round contestants are given 4-8 problems which must be solved in a fixed amount of time. |
★★☆ | CodeFights | CodeFights is a website for competitive programming practice and interview preparation. It features daily challenges of varying difficulty, an archive of problems and regular (every 15 minutes) mini-tournaments. Good for beginners. |
Problem Classifiers
Sites classifying programming problems.
Choose a category (eg. DP) of interest and practice problems on that topic.
☆ | Name | Description |
---|---|---|
★★★ | A2 Online Judge | Mixed |
★★★ | Problem Classifier | SPOJ |
★★☆ | UVa Online Judge | CP Book |
★☆☆ | Codeforces Tags | CF (DP) |
★★☆ | HackerRank | HackerRank |
★★☆ | Juniors Training Sheet, by Mostafa Saad Ibrahim | ~800 ordered problems for newcomers to be good up to Div2-D |
★★☆ | Lucky貓的 UVA(ACM)園地 (Chinese) | UVa |
★★☆ | Topcoder problem archive | List of problems with categories and complexity levels |
Contest Calendars
Calendars for impending programming contests.
(Never miss another contest!)
☆ | Name | Description |
---|---|---|
★★★ | Programming Contest Calendar - HackerRank | Google Calendar export available |
★★☆ | clist.by | API available for use |
★★☆ | Coding Calendar (Android App) | |
★★☆ | Coder’s Calendar: Android App, Chrome Extension, Firefox Add-on | |
★★★ | CodeHorizon: iOS App, Android App |
Sites for Questions
These are great sites to ask questions.
Paste your codes at ideone, pastebin or other sites to avoid formatting issues.
☆ | Name | Description |
---|---|---|
★★★ | Codeforces | For quick answers, Codeforces is definitely the go-to place to ask about anything competition-related. |
★★★ | Competitive Programming - Quora | You would typically get more elaborate answers on Quora, but you might not have your questions answered straightaway. |
★★☆ | Theoretical Computer Science Stack Exchange | This place is generally for the academics, so don’t ask questions about contest problems here. |
Camps and Trainings
Online Trainings and Camps.
☆ | Name | Description |
---|---|---|
★★★ | Online Free Problem-Solving Coaching, by Mostafa Saad Ibrahim | See the coaching details and people comments on its nature/quality. |
Implementations
Algorithm & Data structure implementations.
☆ | Name | Description |
---|---|---|
★★★ | CodeLibrary, by Andrey Naumenko (indy256) | CodeLibrary contains a large collection of implementations for algorithms and data structures in Java and C++. You may also visit his GitHub Repository. |
★★★ | spaghetti-source/algorithm, by Takanori MAEHARA (@tmaehara) | High-quality implementations of many hard algorithms and data structures. |
★★★ | kth-competitive-programming/kactl, by Simon Lindholm (simonlindholm) et al. | A phenomenally organized, documented and tested team notebook from KTH Royal Institute of Technology. One of the most well-crafted team notebooks (contest libraries) I’ve ever seen. |
★★☆ | jaehyunp/stanfordacm | Stanford’s team notebook is well maintained and the codes within are of high-quality. |
★★☆ | ngthanhtrung23/ACM_Notebook_new, by team RR Watameda (I_love_Hoang_Yen, flashmt, nguyenhungtam) from National University of Singapore | RR Watameda represented National University of Singapore for the 2016 ACM-ICPC World Finals. The items in this notebook are pretty standard and well-organized. |
★★☆ | bobogei81123/bcw_codebook, by team bcw0x1bd2 (darkhh, bobogei81123, step5) from National Taiwan University | bcw0x1bd2 represented National Taiwan University for the 2016 ACM-ICPC World Finals. This notebook contains robust implementations for advanced data structures and algorithms. |
★☆☆ | foreverbell/acm-icpc-cheat-sheet, by foreverbell (foreverbell) | A notebook with some advanced data structures and algorithms including some from the China informatics scene. |
★☆☆ | igor’s code archive, by Igor Naverniouk (Abednego) | A good notebook by Igor Naverniouk who is currently a software engineer at Google and part of the Google Code Jam team. |
Language Specifics
Languages and other miscellaneous knowledge.
C/C++
☆ | Name | Description |
---|---|---|
★★☆ | Power up C++ with the Standard Template Library - Topcoder: Part 1, Part 2 | An introductory tutorial on basic C++ STLs. |
★★☆ | Yet again on C++ input/output - Codeforces | Learn more about C++ I/O optimizations. |
★★☆ | C++ Tricks - Codeforces … What are some cool C++ tricks to use in a programming contest? - Quora | Plentiful C++ tricks for competitive programming. Note that some should be used with care. |
★★★ | C++ STL: Policy based data structures - Codeforces: Part 1, Part 2 | Detailed introduction to the extra data structures implemented in GNU C++. The official documentation can be found here. |
★☆☆ | C++11 FAQ (English, Chinese, Russian, Japanese, Korean) | A list of FAQs regarding C++11 collected and written by Bjarne Stroustrup, the creator of C++. |
Java
☆ | Name | Description |
---|---|---|
★★☆ | How to read input in Java — tutorial - Codeforces | Learn how to read input faster. This is a must-read for those who intend to use Java for competitive programming |
★★☆ | How to sort arrays in Java and avoid TLE - Codeforces | Some tips on how to avoid hitting the worst case of quick sort |
★★☆ | BigNum arithmetic in Java — Let’s outperform BigInteger! - Codeforces | A basic but faster custom BigInteger class |
★★☆ | EZ Collections, EZ Life (new Java library for contests) - Codeforces | A Java library for contests written by Alexey Dergunov (dalex). ArrayList, ArrayDeque, Heap, Sort, HashSet, HashMap, TreeSet, TreeMap, TreeList and pair classes are implemented |
Miscellaneous
☆ | Name | Description |
---|---|---|
★★★ | Bit Twiddling Hacks | A huge compiled list of bit manipulation tricks. |
★★★ | Comparing Floating Point Numbers, 2012 Edition - Random ASCII | Everything you need to know about floating point numbers. A must read especially for geometry topics. |
★★☆ | Object-Oriented C Style Languages: C++, Objective-C, Java, C# - a side-by-side reference sheet | A detailed side-by-side reference sheet for common syntaxes. |
Tools
Awesome tools that will make your life easier.
IDEs
☆ | Name | Platform | Description |
---|---|---|---|
★★★ | Vim | CLI / Cross-Platform | Vim is one of the most popular text editors among advanced programmers. It allows text-editing to be done very efficiently with solely keystrokes. Vim is also highly configurable, extensible and integrates with shells (command lines) really well. The only setback about Vim is that it has a high learning curve for beginners. |
★★★ | Emacs | CLI / Cross-Platform | Emacs is another popular text editor (or development environment to be more precise). The debate on “Vim vs. Emacs” is constantly brought up due to their popularity. Basically Emacs is more than just a text editor. It has plugins like file managers, web browsers, mail clients and news clients that allows users to performs these tasks directly inside Emacs. Emacs is “heavier” because of this, but it arguably has a relatively easier learning curve for beginners. |
★★★ | Far Manager | Hybrid / Windows | Far Manager is the most widely-used editor in the RU/CIS competitive programming community. It’s actually a file manager in its bare bones, but you can install FarColorer - a syntax highlighter plugin to program on it. Properly configured, Far Manager allows you to navigate between files very efficiently while writing your codes. |
★★★ | Code::Blocks | GUI / Cross-Platform | Code::Blocks is the go-to IDE for C/C++. It’s a full-fledged, versatile IDE with numerous great features. Code::Blocks is usually provided along with Vim in programming contests. |
★★★ | IntelliJ IDEA | GUI / Cross-Platform | IntelliJ IDEA is certainly one of the best IDEs for Java. It’s used by most competitive programmers who use Java as their main language. Be sure to check out CHelper, a very handy plugin written for programming contests. |
★★☆ | Sublime Text | GUI / Cross-Platform | Sublime Text is an extraordinary text editor. Packed with powerful and innovative features like Multiple Carets, Minimaps and Command Palletes, it attracts a strong and engaging community. Sublime Text is highly extensible, so be sure to have Package Control installed and explore perhaps one of the largest catalogue of plugins! |
★★☆ | Eclipse | GUI / Cross-Platform | Eclipse is another good IDE for Java. It’s an okay alternative to Intellij IDEA (A tad inferior to IDEA by today’s standards). Sometimes contests only provide Eclipse for some reason, so this might be a good incentive to try and use Eclipse. |
★★☆ | CLion | GUI / Cross-Platform | CLion, produced by JetBrains - the same company who made Intellij IDEA, is a powerful IDE for C++. Free educational licenses are available OR you can try out their EAP (Early Access Program) which is still free as of Apr, 2018. You may want to turn off its code inspection feature as it will cause quite a bit of lag. |
★☆☆ | Other IDEs | Mixed | Visual Studio is the IDE to use in case you want to code in C#. … Both Atom and Visual Studio Code are built with Electron (written in JavaScript) and therefore somewhat resource-hogging. … CodeLite is a newly rising IDE. Beware that the load-up and project-creation times can be extraordinary. |
Personal use
☆ | Name | Description |
---|---|---|
★★★ | VisuAlgo | A website featuring a large collection of visualization tools for algorithms and data structures. |
★★★ | General Practice Helpers: … CHelper (IntelliJ IDEA) (manual) … caide (Visual Studio, CodeLite, standalone command line app) … JHelper (AppCode, CLion) online-judge-tools (Stand alone CLI tool, It is actively maintained.) | Great tools that parse contests, inline library codes and provide testing frameworks. They save you from spending your precious time on switching windows and copy-pasting back and forth. |
★★☆ | Codeforces Parsers: … Codeforces Parser … GoCF … cfparser (emacs) cfparser (cli) | These tools parse Codeforces contest problems and help run sample tests. |
★★★ | The On-Line Encyclopedia of Integer Sequences (OEIS) | A stunning encyclopedia with a database of countless integer sequences. It also features a powerful search engine. Sometimes a seemingly difficult combinatorics problem could be equivalent to a simple or studied integer sequence. |
★★☆ | Syntax Highlighters: … tohtml.com … markup.su … hilite.me | Very handy for creating slides or team notebooks with pretty, formatted code snippets. Just copy the highlighted code snippets and paste them in your favorite WYSIWYG (What-You-See-Is-What-You-Get) editor! |
★★☆ | Code Sharing: … Ideone.com … Pastebin.com … Ubuntu Pastebin | These tools generate semi-permanent pages for code sharing. Very useful especially when you’re trying to get someone else to look into your code. |
★★☆ | Ineffable | A simple command-line grader for local grading. |
★★☆ | uDebug | A platform that provides expected outputs for user-specified inputs to problems on the UVa Online Judge. Some problems also provide additional test cases for debugging. |
Contest Preparation
☆ | Name | Description |
---|---|---|
★★★ | polygon | polygon provides a platform and a rich set of tools for professional contest preparation. … An example: Validators with testlib.h - Codeforces |
★★☆ | Graph Editor | A fantasic tool to create and visualize graphs. |
★★☆ | tcframe | A C++ framework for generating test cases of competitive programming problems. |
★★★ | Virtual Judge (vjudge) | Virtual Judge (vjudge) allows users to create virtual contests with problems from notable problem archives. |
★★☆ | BNU Online Judge | BNU Online Judge also allows users to create virtual contests. |
★★☆ | Kattis | Kattis assists in contest preparation (E-mail them for assistance). |
Community
Meet the god-like competitive programmers!
Learn helpful tips, tutorials and insights from these people :)
Blogs
Name (Handle) | Blog Name |
---|---|
Codeforces blogs | |
Petr Mitrichev (Petr) | Algorithms Weekly |
Makoto Soejima (rng_58) | rng_58’s blog |
Bruce Merry (bmerry) | Entropy always increases |
Przemysław Dębiak (Psyho) | Psyho’s blog |
Anudeep Nekkanti (anudeep2011) | Namespace Anudeep ;) |
vexorian (vexorian) | vexorian’s blog |
Ashar Fuadi (fushar) | Fushar’s blog |
LiJie Chen (WJMZBMR) | WJMZBMR (Chinese) |
Huang I-Wen (dreamoon) | 小月的耍廢日誌 (Chinese) |
Shiang-Yun Yang (morris1028) | Morris’ Blog (Chinese) |
Yuhao Du (TooDifficuIt, TooSimple, xudyh) | xudyh (Chinese) |
Youtube and Livestreams
Name (Handle) | Link |
---|---|
Petr Mitrichev (Petr) | Youtube |
Gate Lectures by Ravindrababu Ravula | Youtube |
Mostafa Saad Ibrahim (mostafa.saad.fci) | Competitive Programming Youtube (Arabic Speech-English Text) |
Tushar Roy | Youtube, with many tutorial videos. |
GeeksforGeeks | Youtube |
Algorithms Live! | Youtube |
CodeChef | Youtube |
HackerRank | Youtube |
IDeserve | Youtube |
code_report | Youtube, with contest updates and problem tutorials of HackerRank, LeetCode, Topcoder and Codeforces. |
“Sothe” the Algorithm Wolf | Youtube |
Egor Kulikov (Egor) | Youtube |
Adam Bardashevich (subscriber) | Youtube |
Bohdan Pryshchenko (I_love_Tanya_Romanova) | Twitch, Youtube |
Vladimir Smykalov (enot.1.10) | Twitch, Youtube |
Aleksandar Abas (Alex7) | Youtube |
Mikhail Tikhomirov (Endagorion) | Youtube |
Quora
Visit Competitive Programming - Quora (Top 10 Most Viewed Writers).
Important Community Figures | Description |
---|---|
Bill Poucher | Executive Director of ACM-ICPC. CS Professor at Baylor University. |
Michal Forišek (misof) | Organizer of IPSC and IOI. CS Teacher at Comenius University in Slovakia. Algorithm and CS Education Researcher. Former highly-rated competitive programmer. |
Ahmed Aly (ahmed_aly) | Founder of A2OJ. HackerRank Lead Software Engineer. Former member of the Google Code Jam team. |
Other Awesome Resources
Articles
Informative and helpful articles
Subject |
---|
Overview of Programming Contests, by Przemysław Dębiak (Psyho) |
The ‘science’ of training in competitive programming - Codeforces, by Thanh Trung Nguyen (I_love_Hoang_Yen) |
If you ask me how to improve your algorithm competition skill, I will give you the link of this blog. - Codeforces, by Huang I-Wen (dreamoon) |
How to prepare for ACM - ICPC? - GeeksforGeeks, by Vishwesh Shrimali |
Complete reference to competitive programming - HackerEarth, by Ravi Ojha |
Getting started with the sport of competitive programming - HackerEarth, by Triveni Mahatha |
FAQs
Fine answers to frequently-asked questions
Awesome Lists
Relevant awesome lists
Name | Link |
---|---|
C++ Books | The Definitive C++ Book Guide and List - Stack Overflow |
Java Books | What are the best books to learn Java? - Quora |
Advanced Java Books | What is the best book for advanced Java programming? - Quora |
Algorithms | tayllan/awesome-algorithms |
Algorithm Visualization | enjalot/algovis |
Math | rossant/awesome-math |
C++ | fffaraz/awesome-cpp |
Java | akullpp/awesome-java |
Courses | prakhar1989/awesome-courses |
Free Programming Books | vhf/free-programming-books |
Community-curated C++ Resources | Hackr.io |
Interview Questions
| Name | Description | | — | — | | CareerCup | The most popular website for software engineering interview preparation. | | InterviewBit | Features intriguing and refreshing game-play designs which are designed to invoke one’s interest in practicing. | | Awesome Interviews | A curated list of awesome interview questions |
License
Awesome Competitive Programming is licensed under a Creative Commons Attribution 4.0 International License.