主要就是记录一下解题思路,以及证明的思路。假如题目很长,也会有一个简单的概述。不会有任何实际代码,代码随便搜就有了。
除了解题报告以外,还有按主题排列的知识点。
Online Judge | 解题报告 |
---|---|
Google Code Jam | GCJ |
PKU JudgeOnline | POJ |
Sphere online judge | SPOJ |
USACO Traning | USACO |
UVa Online Judge | UVA |
习题集 | 解题报告 |
---|---|
Competitive Programming 3 | CP3 |
CS 97SI | CS97SI |
POJ訓練計劃Moon修訂298道題 | MOON298 |
要生成HTML,请在git clone后运行make。
dp | Dynamic Programming |
manacher | Manacher's Algorithm |
suffix | Suffix Array |
解题报告中所使用的符号
NOT |
\neg |
FORALL |
\forall |
EXISTS |
\exists |
{} |
\emptyset |
<- |
\in |
</- |
\notin |
= |
= |
=/= |
\neq |
|x| |
|x| |
< |
<,\subset |
=< |
\leq,\subseteq |
/\ |
\cap |
\/ |
\cup |
\ |
\setminus |
=> |
implies |
<=> |
iff |
a**b |
a^b |
{x FOR x <- S} |
\{x | x \in S\} |
<= |
assignment |
解题报告中所使用的类型
Integer()
若元素类型为X
,则集合类型为Set(X)
。比如,元素类型为整数的集合为Set(Integer())
。
1 <- {1,2,3} 4 </- {1,2,3} {1} \/ {2} = {1,2} {1,2} /\ {2,3} = {2} {1,2} \ {2,3} = {1} {1,2} = {1,2} {1,2} =/= {1,2,3} {} < {1} {1} < {1,2}
若元素类型为X
,则数组类型为Array(X)
。比如,元素类型为整数的数组为Array(Integer())
。
从数组中取元素的符号与Python一致
[1,2,3] = [1,2,3] [1,2,3] + [4] = [1,2,3,4] ([1,2,3])[0] = 1 ([1,2,3])[:2] = [1,2]
String() = Array(Integer())
字符串就是普通的整数数组
解题报告中所使用的函数
求参数中的最小值
min(1,2,3) = 1 min(2,3) = 2
求参数中的最大值
max(1,2,3) = 3 max(1,2) = 2
类似Python中的range
range(1,4) = [1,2,3]
size([1,1,1]) = 3 size({1,2,3}) = 3
类似Python中的reduce
reduce(+, [1,1,1]) = 3 reduce(+, [1,2,3]) = 6
powerset({1,2,3}) = {{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}} powerset([1,2,3]) = {[],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]} powerset([1,1,2]) = {[],[1,1],[1,2],[1,1,2]}