forked from UPCACM/DuckKnowNothing
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.tex
executable file
·382 lines (320 loc) · 12.2 KB
/
main.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
%!TEX program = xelatex
\documentclass{ctexart}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{aligned-overset}
\usepackage{bookmark}
\usepackage{fancyhdr}
\usepackage{geometry}
\usepackage{appendix}
\usepackage{bm}
\usepackage{chapterbib}
\geometry{a4paper,scale=0.8}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{ACM模板 by 嘤嘤嘤} %页眉与页脚
\fancyfoot[C]{}
\rfoot{\thepage} % 显示页码
\hypersetup{hidelinks} % 隐藏目录红色边框
\ctexset{section/format = {\Large\bfseries}} % section标题靠左
\definecolor{commentgreen}{RGB}{2,112,10}
\definecolor{eminence}{RGB}{108,48,130}
\definecolor{weborange}{RGB}{255,165,0}
\definecolor{frenchplum}{RGB}{129,20,83}
\newfontfamily\codeFont{SourceCodePro-Medium}
\newfontfamily\codeBold{SourceCodePro-Bold}
\newfontfamily\commentFont{Courier Regular}
\lstset{
language = c++,
numbers = left,
numberstyle = \small,
breaklines = true,
captionpos = b,
tabsize = 4,
% frame = shadowbox,
frame = leftline,
columns = fullflexible,
commentstyle = \commentFont\color[RGB]{0,0,0},
keywordstyle = \codeBold\color[RGB]{0,0,0},
basicstyle = \large\codeFont,
stringstyle = \color[RGB]{48,0,20}\codeFont,
rulesepcolor = \color{red!20!green!20!blue!20},
showstringspaces = false,
}
\setmainfont{Courier Regular} % 英文字体
% \setmainfont{Noto Mono Bold} % 英文字体
\begin{document}
\begin{titlepage} % 封面放在titlepage中不计页码
% \author{嘤嘤嘤}
\title{ACM模板}
\maketitle
\setcounter{page}{0}
\thispagestyle{empty}
\end{titlepage}
\tableofcontents % 显示目录
\newpage
\section{字符串处理}
\subsection{SAM}
\lstinputlisting{./src/StringAlgorithm/SAM.cpp}
\subsection{AC自动机}
(by qi)
\lstinputlisting[language=C++]{./src/StringAlgorithm/ACautomation.cpp}
(by shui)
\lstinputlisting[language=C++]{./src/StringAlgorithm/shui/O(n)-AC自动机.cpp}
\subsection{z-algorithm}
\lstinputlisting[language=C++]{./src/StringAlgorithm/z-algorithm.cpp}
\subsection{后缀数组}
(by shui)
\lstinputlisting[language=C++]{./src/StringAlgorithm/shui/O(nlogn)-后缀数组.cpp}
(by qi)
\lstinputlisting[language=C++]{./src/StringAlgorithm/SuffixArray.cpp}
\subsection{最长上升子序列}
\lstinputlisting{./src/StringAlgorithm/shui/O(nlogn)-最长上升子序列.cpp}
\subsection{Manacher}
\lstinputlisting{./src/StringAlgorithm/shui/O(n)-Manacher.cpp}
\subsection{KMP}
\lstinputlisting{./src/StringAlgorithm/shui/O(n+m)-KMP.cpp}
\subsection{ex-KMP}
\lstinputlisting{./src/StringAlgorithm/shui/O(n+m)-扩展KMP.cpp}
\subsection{Sunday}
\lstinputlisting{./src/StringAlgorithm/shui/O(n)-Sunday.cpp}
\subsection{字符串哈希}
\lstinputlisting{./src/StringAlgorithm/shui/O(n)-字符串Hash.cpp}
\subsection{字符串最大最小表示}
\lstinputlisting{./src/StringAlgorithm/shui/O(n)-最大最小表示.cpp}
\section{排序算法}
\subsection{归并排序}
\lstinputlisting{./src/排序算法/归并排序.cpp}
\section{数学}
\subsection{扩展欧几里得算法}
\lstinputlisting{./src/math/exgcd.cpp}
\subsection{求逆元}
\lstinputlisting{./src/math/inv_element.cpp}
\subsection{Miller robin素数检验}
\lstinputlisting{./src/math/Miller_Rabin.cpp}
\subsection{快速傅里叶变换}
\lstinputlisting{./src/math/FFT.cpp}
\subsection{快速数论变换}
\lstinputlisting{./src/math/NTT.cpp}
\subsection{求原根}
\lstinputlisting{./src/math/Primitive_root.cpp}
\subsection{BM黑盒线代}
\lstinputlisting{./src/math/LinearRecurrence.cpp}
\subsection{FWT}
\lstinputlisting{./src/math/FWT.cpp}
\subsection{Simpson积分}
\lstinputlisting{./src/math/simpson_integral.cpp}
\subsection{扩展欧拉定理}
\begin{equation}
a^b\equiv \left\{
\begin{aligned}
& a^{b\%\phi(p)}& gcd(a,p)=1\\
& a^b & gcd(a,p)\neq1,b<\phi(p)\\
& a^{b\%\phi(p)+\phi(p)} & gcd(a,p)\neq1,b\geq\phi(p)
\end{aligned}
\right.
\end{equation}
\subsection{杜教筛}
\begin{align*}
(f*g)(n)&=\sum_{d|n}f(d)g(n/d) \\
\sum_{i=1}^n(f*g)(i) &= \sum_{i=1}^n\sum_{d|i}f(d)g(i/d) \\
&= \sum_{d=1}^ng(d)\sum_{i=1}^{\lfloor n/d\rfloor}f(i) \\
&= \sum_{d=1}^ng(d)s(\lfloor n/d \rfloor) \\
&= \sum_{d=2}^ng(d)s(\lfloor n/d \rfloor)+g(1)s(n) \\
g(1)s(n) &=\sum_{i=1}^n(f*g)(i)-\sum_{d=2}^ng(d)s(n/d)
\end{align*}
\lstinputlisting{./src/math/djs.cpp}
\subsection{Pell方程}
\lstinputlisting{./src/math/Pell.cpp}
\subsection{莫比乌斯反演}
$$ f(n)=\sum_{d|n}g(d) \Longleftrightarrow g(n)=\sum_{d|n}\mu(d)f(\frac{n}{d}) $$
\subsection{常用素数}
\lstinputlisting{./src/math/primes.txt}
\subsection{快速取模乘}
\lstinputlisting{./src/math/quickMod.cpp}
\subsection{多项式算法(逆元,exp,ln)}
\lstinputlisting{./src/math/PolynomialAlgorithms.cpp}
\subsection{gcd}
\lstinputlisting{./src/math/数论/GCD.cpp}
\subsection{Eratosthenes素数筛}
\lstinputlisting{./src/math/数论/Eratosthenes素数筛.cpp}
\subsection{扩展BSGS}
\lstinputlisting{./src/math/数论/扩展BSGS.cpp}
\subsection{欧拉函数}
\lstinputlisting{./src/math/数论/欧拉函数.cpp}
\subsection{矩阵快速幂}
\lstinputlisting{./src/math/数论/矩阵快速幂.cpp}
\subsection{组合数}
\lstinputlisting{./src/math/数论/组合数.cpp}
\subsection{长整型无脑取模乘}
\lstinputlisting{./src/math/数论/长整型无脑取模乘.cpp}
% section (end)
%%%------------------------------------------------------------
\section{数据结构}
\subsection{KD-Tree}
\lstinputlisting{./src/DataStructures/KDTree.cpp}
\subsection{李超树}
\lstinputlisting{./src/DataStructures/LichaoTree.cpp}
\subsection{左偏树\&优先队列} % (fold)
\lstinputlisting{./src/DataStructures/树/左偏树_优先队列.cpp}
\subsection{树链剖分}
(by shui)
\lstinputlisting{./src/DataStructures/树/树链剖分.cpp}
(by qi)
\lstinputlisting{./src/DataStructures/HeavyLightdeComposition.cpp}
\subsection{Treap}
\lstinputlisting{./src/DataStructures/树/二叉树/Treap.txt}
\lstinputlisting{./src/DataStructures/树/二叉树/Treap指针.cpp}
\lstinputlisting{./src/DataStructures/树/二叉树/Treap数组.cpp}
\subsection{线段树}
\lstinputlisting{./src/DataStructures/树/二叉树/zkw线段树.cpp}
\subsection{主席树}
(by shui)
\lstinputlisting{./src/DataStructures/树/二叉树/主席树.cpp}
(by qi)
\lstinputlisting{./src/DataStructures/PersistentSegmentTree.cpp}
\subsection{二叉查找树}
\lstinputlisting{./src/DataStructures/树/二叉树/二叉查找树_temp.cpp}
\subsection{Splay}
\lstinputlisting{./src/DataStructures/树/二叉树/伸展树(splay_tree).cpp}
\lstinputlisting{./src/DataStructures/树/二叉树/伸展树splay数组.cpp}
\subsection{线段树}
\lstinputlisting{./src/DataStructures/树/二叉树/线段树.cpp}
\subsection{二叉堆\&优先队列}
\lstinputlisting{./src/DataStructures/树/堆/二叉堆_优先队列.cpp}
\subsection{树状数组} % (fold)
\lstinputlisting{./src/DataStructures/树状数组/O(logn)-树状数组.cpp}
\subsection{二维树状数组} % (fold)
\lstinputlisting{./src/DataStructures/树状数组/二维树状数组.cpp}
\subsection{可持久化Trie树} % (fold)
\lstinputlisting{./src/DataStructures/PersistentTrieTree.cpp}
\subsection{并查集} % (fold)
\lstinputlisting{./src/DataStructures/集合/并查集.cpp}
\subsection{栈\&队列}
\subsubsection{单调栈}
\lstinputlisting{./src/DataStructures/单调栈.cpp}
\subsubsection{队列}
\lstinputlisting{./src/DataStructures/queue.cpp}
\subsubsection{单调队列}
\lstinputlisting{./src/DataStructures/单调队列.cpp}
\section{动态规划}
\subsection{数位dp}
\lstinputlisting{./src/DynamicPrograming/数位DP.cpp}
\subsection{状态压缩}
\lstinputlisting{./src/DynamicPrograming/状态压缩.cpp}
\subsection{背包问题}
\subsubsection{01背包}
\lstinputlisting{./src/DynamicPrograming/背包问题/01背包.cpp}
\subsubsection{多重背包}
\lstinputlisting{./src/DynamicPrograming/背包问题/多重背包.cpp}
\subsubsection{完全背包}
\lstinputlisting{./src/DynamicPrograming/背包问题/完全背包.cpp}
\section{图论}
\subsection{二分图}
\subsubsection{KM}
\lstinputlisting{./src/GraphAlgorithm/二分图/O(n^3)-KM.cpp}
\subsubsection{匈牙利}
\lstinputlisting{./src/GraphAlgorithm/二分图/O(VE)-最大匹配.cpp}
\subsection{拓扑排序}
\subsubsection{DFS拓扑排序}
\lstinputlisting{./src/GraphAlgorithm/拓扑排序/O(V+E)-DFS拓扑排序.cpp}
\subsubsection{Kahn拓扑排序}
\lstinputlisting{./src/GraphAlgorithm/拓扑排序/O(V+E)-Kahn拓扑排序.cpp}
\subsection{最短路}
\subsubsection{堆优化Dijkstra}
\lstinputlisting{./src/GraphAlgorithm/最短路/Dijkstra+Priority_queue.cpp}
\subsubsection{SPFA}
\lstinputlisting{./src/GraphAlgorithm/最短路/O(VE)-SPFA.cpp}
\subsubsection{次短路Dijkstra}
\lstinputlisting{./src/GraphAlgorithm/最短路/次短路-Dijkstra.cpp}
\subsubsection{AStar}
\lstinputlisting{./src/GraphAlgorithm/最短路/AStar.cpp}
\subsection{网络流}
\subsubsection{Dinic}
\lstinputlisting{./src/GraphAlgorithm/网络流/O(V^2E)-Dinic.cpp}
\subsubsection{MCMF}
\lstinputlisting{./src/GraphAlgorithm/网络流/MCMF.cpp}
\subsection{连通图}
\subsubsection{割边}
\lstinputlisting{./src/GraphAlgorithm/连通图/割边_Temp.cpp}
\subsubsection{连通图Tarjan}
\lstinputlisting{./src/GraphAlgorithm/连通图/连通图_Tarjan.cpp}
\section{树}
\subsection{LCA}
\subsubsection{RMQ-ST}
\lstinputlisting{./src/树/LCA-RMQ_ST.cpp}
\subsubsection{Tarjan并查集}
\lstinputlisting{./src/树/LCA_Tarjan_并查集.cpp}
\subsubsection{倍增算法}
\lstinputlisting{./src/树/O(nlogn)-LCA倍增.cpp}
\subsection{最小生成树}
\subsubsection{O(elog2v)-primMST}
\lstinputlisting{./src/树/O(elog2v)-primMST.cpp}
\subsubsection{O(elogv)-prim+heap MST}
\lstinputlisting{./src/树/O(elogv)prim+heapMST.cpp}
\section{计算几何}
\subsection{基础定义}
\lstinputlisting{./src/计算几何/基础定义.cpp}
\subsection{点}
\lstinputlisting{./src/计算几何/点.cpp}
\subsection{线}
\lstinputlisting{./src/计算几何/线.cpp}
\subsection{凸包}
\lstinputlisting{./src/计算几何/凸包.cpp}
\subsection{三角形}
\lstinputlisting{./src/计算几何/三角形.cpp}
\subsection{圆}
\lstinputlisting{./src/计算几何/圆.cpp}
%% start of shui's templates
\subsection{O(n)-求凸包 \& 旋转卡壳}
\lstinputlisting{./src/计算几何/byshui/O(n)-求凸包_旋转卡壳.cpp}
\subsection{两圆相交面积}
\lstinputlisting{./src/计算几何/byshui/两圆相交面积.cpp}
\subsection{两直线交点}
\lstinputlisting{./src/计算几何/byshui/两直线交点.cpp}
\subsection{点在直线上的垂点}
\lstinputlisting{./src/计算几何/byshui/点在直线上的垂点.cpp}
\subsection{矩形面积交}
\lstinputlisting{./src/计算几何/byshui/矩形面积交.cpp}
\subsection{线段类}
\lstinputlisting{./src/计算几何/byshui/线段类.cpp}
\subsection{计算三角形外心}
\lstinputlisting{./src/计算几何/byshui/计算三角形外心.cpp}
%% end of shui's
\section{STL}
\subsection{accumulate}
\lstinputlisting{./src/STL/accumulate.cpp}
\section{其他}
\subsection{约瑟夫问题}
\lstinputlisting{./src/其他/josephus-problem.cpp}
\subsection{RMQ-ST}
\lstinputlisting{./src/其他/RMQ-ST.cpp}
\subsection{一些理论}
\lstinputlisting{./src/其他/一些理论.cpp}
\subsection{随机数和文件输出}
\lstinputlisting{./src/其他/随机数和文件输出.cpp}
\subsection{随机遍历数组}
\lstinputlisting{./src/其他/随机遍历数组.cpp}
\subsection{尺取}
\lstinputlisting{./src/其他/尺取.cpp}
\subsection{std::unordered\_map避免TLE}
\begin{lstlisting}
unordered_map<int,int>mp;
mp.reserve(1024);
mp.max_load_factor(0.25);
\end{lstlisting}
\subsection{输入输出挂}
(by shui)
\lstinputlisting{./src/其他/输入输出优化.cpp}
(by qi)
\lstinputlisting{./src/其他/FastIO.cpp}
\subsection{CDQ分治}
\lstinputlisting{./src/其他/CDQ.cpp}
\subsection{vim配置}
\lstinputlisting{./src/其他/_vimrc}
\subsection{程序对拍器}
\lstinputlisting[language=bash]{./src/其他/checker.sh}
\subsection{简易对排器}
\lstinputlisting[language=bash]{./src/其他/Simple_checker.sh}
中文 english
\end{document}