OI 比赛 tex 模板

最近教练三天两头让我们组比赛,为了编写“好看”的题面和题解,装了 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}

预览效果(部分):

原文地址:https://www.cnblogs.com/AThousandMoons/p/14024398.html