最近教练三天两头让我们组比赛,为了编写“好看”的题面和题解,装了 texlive+texstudio。
然后去网上找一堆模板,最后终于找到了能用的两份。
documentclass[UTF8]{ctexart}
usepackage{geometry}
usepackage{fancyhdr}
usepackage{graphicx}
usepackage{array}
usepackage{amsmath}
usepackage{listings}
usepackage{xcolor}
usepackage{fontspec}
ewcommand{PreserveBackslash}[1]{let emp=\#1let\= emp}
ewcolumntype{C}[1]{>{PreserveBackslashcentering}p{#1}}
ewcolumntype{R}[1]{>{PreserveBackslash
aggedleft}p{#1}}
ewcolumntype{L}[1]{>{PreserveBackslash
aggedright}p{#1}}
author{zihao{2}2021 ???-?2}
date{zihao{2}day1 \ zihao{-3} extbf{时间:$2021$~年~$11$~月~$8$~日~$14:30sim18:30$}}
itle{zihao{2} extbf{这里填什么都行就是不能写???}}
geometry{left=3.18cm,right=3.18cm,top=2.54cm,bottom=2.54cm}
lstset{
columns=fixed,
numbers=left, % 在左侧显示行号
numberstyle= inycolor{gray}, % 设定行号格式
frame=none, % 不显示背景边框
backgroundcolor=color[RGB]{245,245,244}, % 设定背景颜色
keywordstyle=color[RGB]{40,40,255}, % 设定关键字颜色
numberstyle=footnotesizecolor{darkgray},
commentstyle=itcolor[RGB]{0,96,96}, % 设置代码注释的格式
stringstyle=
mfamilyslshapecolor[RGB]{128,0,0}, % 设置字符串格式
showstringspaces=false, % 不显示字符串中的空格
language=c++, % 设置语言
}
egin{document}
maketitle
setcounter{page}{1}
pagenumbering{arabic}
extbf{一、题目概况}
egin{center}
egin{tabular}{*{4}{|L{9em}}|}
hline
题目名称 & 格雷码 & 括号树 & 树上的数\ hline
题目类型 & 传统型 & 传统型 & 传统型 \ hline
目录 & exttt{code} & exttt{brackets} & exttt{tree} \ hline
可执行文件名 & exttt{code} & exttt{brackets} & exttt{tree} \ hline
输入文件名 & exttt{code.in} & exttt{brackets.in} & exttt{tree.in} \ hline
输出文件名 & exttt{code.out} & exttt{brackets.out} & exttt{tree.out} \ hline
每个测试点时限 & 1.0 秒 & 1.0 秒 & 60.0 秒 \ hline
内存限制 & 256 MiB & 256 MiB & 256 MiB \ hline
子任务数目 & 20 & 20 & 20 \ hline
测试点是否等分 & 是 & 是 & 是 \ hline
end{tabular}
end{center}
extbf{二、提交源程序文件名}
egin{center}
egin{tabular}{*{4}{|L{9em}}|}
hline
对于C++语言 & exttt{code.cpp} & exttt{brackets.cpp} & exttt{tree.cpp} \ hline
对于C语言 & exttt{code.c} & exttt{brackets.c} & exttt{tree.c} \ hline
对于pascal语言 & exttt{code.pas} & exttt{brackets.pas} & exttt{tree.pas} \ hline
end{tabular}
end{center}
extbf{三、编译选项}
egin{center}
egin{tabular}{|L{9em}|C{29.4em}|}
hline
对于C++语言 & exttt{-lm -O2 -std=c++17} \ hline
对于C语言 & exttt{-lm -O2} \ hline
对于pascal语言 & \ hline
end{tabular}
end{center}
extbf{四、注意事项}
egin{enumerate}
item{文件名(程序名和输入输出文件名)必须使用英文小写。}
item{C/C++中函数main()的返回类型必须是int,程序正常结束时的返回值必须是0。}
item{若无特殊说明,结果的比较方式为全文比较(过滤行末空格及文末回车)}
item{程序可使用的栈内存空间限制与题目的内存限制一致。}
item{评测时采用的机器配置为:Intel® Core™ i5-9500 CPU @ 3.00GHz ,内存8G。上述时限以此配置为准。}
item{评测在当前最新公布的 Ubuntu 20.04 下进行,各语言的编译器版本以此为准。}
item{$sum$ 是求和运算符,$sumlimits_{i=1}^na_i$ 的值等于 $a_1+a_2+dots+a_n$。}
end{enumerate}
ewpage
pagestyle{plain}
% T1
setcounter{page}{3}
ewpage
section*{zihao{-1}格雷码 ( exttt{code})}
subsection*{【题目描述】}
subsection*{【输入格式】}
从输入文件 oldmath $code.in$ unboldmath 中读入数据。
subsection*{【输出格式】}
输出到文件 oldmath $code.out$ unboldmath 中。
subsection*{【样例 1 输入】}
egin{lstlisting}
end{lstlisting}
subsection*{【样例 1 输出】}
egin{lstlisting}
00011000111111010000001001001000000001100011
end{lstlisting}
subsection*{【样例 2】}
见选手目录下的 oldmath $code/code2.in$ 和 $code/code2.ans$ unboldmath。
subsection*{【数据范围】}
% T2
ewpage
section*{zihao{-1}括号树 ( exttt{brackets})}
subsection*{【题目描述】}
subsection*{【输入格式】}
从输入文件 oldmath $brackets.in$ unboldmath 中读入数据。
subsection*{【输出格式】}
输出到文件 oldmath $brackets.out$ unboldmath 中。
subsection*{【样例 1】}
见选手目录下的 oldmath $brackets/brackets1.in$ 和 $brackets/brackets1.ans$ unboldmath。
subsection*{【数据范围】}
% T3
ewpage
section*{zihao{-1}树上的数 ( exttt{tree})}
subsection*{【题目描述】}
subsection*{【输入格式】}
从输入文件 oldmath $tree.in$ unboldmath 中读入数据。
subsection*{【输出格式】}
输出到文件 oldmath $tree.out$ unboldmath 中。
subsection*{【样例 1】}
见选手目录下的 oldmath $tree/tree1.in$ 和 $tree/tree1.ans$ unboldmath。
subsection*{【数据范围】}
end{document}
documentclass{ctexbeamer} % 文档类beamer的汉化版本
usefonttheme{serif} % 使用衬线字体
usefonttheme{professionalfonts} % 数学公式字体
usepackage{mathtools}
%% --> 配置中英文字体
% usepackage{fontspec}
% setmainfont{Liberation Serif}
% setsansfont{DejaVu Sans}
% setmonofont{Cousine}
% usepackage{xeCJK}
% setCJKmainfont[BoldFont=Noto Sans SC]{Noto Serif SC}
% setCJKsansfont{Noto Sans SC}
% setCJKmonofont{WenQuanYi Micro Hei Mono}
%% --> 主题和色彩风格
usetheme{Frankfurt}
usecolortheme{orchid}
egin{document}
%% --> 导言页
%
itle{刷题赛 3 题解}
author{p\_b\_p\_b}
% institute{加里敦大学}
frame{ itlepage}
%% --> 目录结构
%
egin{frame}{目录}
ableofcontents[hideallsubsections]
end{frame}
%% --> 正式内容开始
%
section{A 白日梦} % 第 1 节
%% 每一节开头显示目录,并高亮当前节的主题
AtBeginSection[]{frame{ ableofcontents[currentsection,hideallsubsections]}}
%% --> 第 1 帧
egin{frame}{A 白日梦}{题目描述}
给定字符串 $S$,求最大的正整数 $k$,使得存在长为 $k$ 的非空字符串序列 $s$,使得 $s_i$ 都是 $S$ 的子串,且 $s_{i-1}$ 在 $s_i$ 中出现至少两次。
$|S|le 2 imes 10^5$。
end{frame}
%% --> 第 2 帧
egin{frame}{A 白日梦}{题解}
onslide<1->{建出 SAM 的 Parent 树,用主席树维护 endpos 集合。}
onslide<2->{从上至下 dp,设 $f_i$ 表示到节点 $i$ 时序列的长度,$g_i$ 表示此时序列的末尾节点最浅的是哪个,转移状态直接贪心判断 $g_{fa_i}$ 的字符串是否在 $i$ 表示的字符串中出现至少 $2$ 次。}
onslide<3->{时间复杂度 $O(nlog n)$。}
end{frame}
section{H 希望树} % 第 2 节
%% --> 第 3 帧
egin{frame}{H 希望树}{题目描述}
给定 $n$ 个点的树,$m$ 次询问 $[l,r]$,求 $max{ ext{dis}(u,v)ig|lle ule vle r}$。
$n,mle 3 imes 10^5$
end{frame}
egin{frame}{H 希望树}{题解}
onslide<1->{对于两个点集 $S,T$,$Scup T$ 的直径端点必定是 $S$ 或 $T$ 的直径端点。}
onslide<2->{使用 ST 表求 lca 和维护直径端点。}
onslide<3->{时间复杂度 $O(nlog n+m)$。}
end{frame}
end{document}
预览效果(部分):