CP相关的一些网站平台、实用工具,以及编译相关的一些注意事项。

网站平台-算法类

OI-wiki

国人维护的最大规模编程竞赛知识站点。

CP Algorithms

主要内容为E-Maxx的英文翻译,也有部分原创内容。

VISUALGO

提供了多种基本算法和数据结构的可交互动态展示。非常值得一看。

网站平台(竞赛类)

Codeforces

目前全球范围内每次比赛参加人数最多的竞赛平台。除了比赛和题库外,在博客和讨论区也有非常多高质量的内容。全球顶尖的CP高手基本都在上面出没。

主要的竞赛种类包括Global Round(所有人都计分)、Regular Round(分Div.1和Div.2两组进行)、Div.2 Only、Educational Round和Div.3 Round等。此外,还有一些不计分的镜像赛,以及在Gym 中举办的练习赛。

近来,Codeforces又开放了EDU 板块,教学内容和配套练习的质量较高,目前内容还比较少,正在陆续添加中。

网站设在俄罗斯,如果访问缓慢,可以尝试使用国人制作的镜像1 镜像2 。另外,在比赛期间,会临时开放比赛专用的比赛服1比赛服2比赛服3

AtCoder

建立在日本的一个新兴竞赛平台。竞赛分为Beginner、Regular、Grand三个级别。Beginner的前两题一般非常水,除此之外,其他题目的质量较高。

TopCoder

老牌竞赛平台,举办经典赛事TCO(TopCoder Open)。近年来重心转向远程工作和更宽泛的软件开发。

Google

Google每年举办三种类型的编程竞赛。

  • Kick Start 为新手入门级,也是Google面试的敲门砖,每年举办八轮。
  • Code Jam 是Google的王牌赛事,也是最重要的赛事,分为资格赛、A轮、B轮、C轮和决赛。决赛每年有25个名额。
  • Hash Code 是一项团队赛,与一般编程竞赛不同,赛题一般为没有最优答案的优化问题。分为资格赛和决赛两轮。

CodeChef

由印度公司Directi 运营的竞赛平台。特色是有Long Challenge,一种持续十多天的马拉松赛制,其中包含几道难度极高,可能需要花费数天时间的题目。

洛谷

国内竞赛和OJ平台,用户群体的平均年龄比较低。

牛客竞赛

国内竞赛和OJ平台,商业性较强。本体为牛客网 ,主要面向求职,讨论社区比较活跃。有一些公司在其平台上进行线上笔试和面试。

#Leetcode

原本是一个求职刷题的网站,国服叫力扣 。近几年来,长期举办周赛(固定在北京时间每周日的上午十点半开始),最近又增加了双周赛(每两周一次,北京时间周六的晚上十点半开始)。

赛题质量波动较大,总体难度低于其他平台。比较适合新手。

#BinarySearch

一个新的刷题网站,现在也在每周举办周赛。上面题目的总体难度要比Leetcode略高一些。

网站平台(OJ类)

Sphere Online Judge

UVa Online Judge

老牌OJ,不过评测系统不是十分友好。知名的CP Book 里基本都是用UVa题目作为例题和练习题。

Kattis

DMOJ

POJ

国内最老牌的OJ之一,由北京大学主办。目前界面和系统已经比较陈旧。

HDOJ

国内老牌OJ,由杭州电子科技大学主办。过去办比赛较多,现在主要负责举办每年的百度之星。

UOJ

国内OJ平台,代码开源 ,被广泛传播用于搭建私有OJ。

LibreOJ

国内OJ平台。由Menci 和张晴川创办。

Comet OJ

国内OJ平台。

Vijos

国内OJ平台。

AcWing

国内OJ平台。由闫学灿创办。

HackerRank

更偏向于求职,不限于CP,也包括很多软件开发相关的内容。有一些公司会在这一平台组织线上笔试。

实用工具)实用工具

cf-tool

一款用于Codeforces比赛和练习的命令行工具。

CP Editor

一款基于Qt的IDE,集成了多项CP相关的功能(测试用例抓取,快速测试,快速提交等)。

cf-predictor

根据实时排名预测Codeforces Rating变化。

编译运行相关)编译运行相关

建议参考OJ平台的编译命令,比如Codeforces 的(Windows环境)。

C++打开栈空间

  • Windows环境,编译时加入-Wl,--stack=268435456选项(设置系统栈空间为256 MB)。
  • Linux/Mac环境,编译时加入
  • Wl,-stack_size,0x10000000,-stack_addr,0xc0000000

选项(设置系统栈空间为256 MB)。

  • Linux环境也可以在当前终端环境中执行ulimit -s unlimited,之后在本终端中运行的程序不受栈空间限制(该命令对Mac无效)
  • Mac环境建议使用homebrew方式安装的g++(注意其调用方式为g++-vv代表版本号),不要使用Mac自带的g++命令。

Java设置堆栈大小

编译时加入-Xss256M选项可以将堆栈大小设置为256 MB。

Python设置最大递归深度

import sys

sys.setrecursionlimit(10000)

理论上来说可以设置为任意值,但实际上会受到Python版本和系统环境的限制,未必能达到设置值。最好的办法,还是在可以预料到递归深度太深时,放弃使用递归,或者放弃Python。

Last modification:June 20, 2021
如果觉得我的文章对你有用,请随意赞赏