用LaTeX写一篇帅帅的算法学习题解

news2024/11/24 5:20:47

前言

先来看看用 LaTeX \text{LaTeX} LaTeX 写出来的题解是啥样,内容是瞎写的。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

前提知识与环境

  • 默认已经掌握了 LaTeX \text{LaTeX} LaTeX 的一些用法,特别是公式如何写,如果你对这块还是很了解,可以先学着使用 Typora \text{Typora} Typora,也可以从 LaTeXlive \text{LaTeXlive} LaTeXlive 学习 Latex \text{Latex} Latex,更可以忽略本文。
  • 本文在进行 LaTeX \text{LaTeX} LaTeX 编辑时,使用的是 Miktex \text{Miktex} Miktex 环境,使用 Texworks \text{Texworks} Texworks 进行编写。
  • 在进行下面内容之前,你需要先准备好环境
    1. Miktex \text{Miktex} Miktex 安装方法就不介绍了,网上很多。
    2. minted \text{minted} minted 这个需要先安装python,然后 pip install pygments \text{pip\ install\ pygments} pip install pygments,这个用于高亮代码。
    3. 下载并安装 inkscape \text{inkscape} inkscape ,用于插入 svg \text{svg} svg 图片。
  • Miktex \text{Miktex} Miktex 安装完成后,打开 TeXworks \text{TeXworks} TeXworks 设置一下 –shell-escape \text{--shell-escape} –shell-escape 。具体步骤如下: TeXworks \text{TeXworks} TeXworks 菜单中 “编辑”–“首选项”–“排版”
    在这里插入图片描述
    在“处理工具”中,选择用的工具,这里我用的是 pdfLaTeX \text{pdfLaTeX} pdfLaTeX ,又击打开后,参数设置如下图:
    在这里插入图片描述

开始写题解

建立基本模板

  1. 新建一个文件,选择 pdfLaTeX \text{pdfLaTeX} pdfLaTeX 编辑器。此时就可以写了内容了,只是点了小绿箭头无法生成 PDF \text{PDF} PDF ,会编译出错。
    在这里插入图片描述

  2. 加入下面代码,题目和第一个标题就生成了

\documentclass[11pt]{article} % article模板
\usepackage[UTF8, scheme = plain]{ctex} % UTF8编码,ctex 可显示中文
\usepackage{geometry} % 页面设置
\geometry{
  a4paper,         % 设置纸张为A4大小
  total={170mm,257mm}, % 设置文本区域的总宽度和高度
  left=25mm,       % 设置左侧边距
  top=25mm,        % 设置上侧边距
  headheight=15mm,  % 设置页眉高度
  headsep=10mm     % 设置页眉与文本之间的间距
}

\title{ \textbf{[ABC185E] Sequence Matching}}
\author{}
\date{} 


\begin{document}

\maketitle

\section{Solution} 

\end{document}

生成的效果
在这里插入图片描述
这里要了解一下 title \text{title} title 和每级标题。
title \text{title} title

\title{ \textbf{[ABC185E] Sequence Matching}}
\author{}
\date{}

分别设置题目,作者和日期,其中作者和日期如果为空,则不显示,最后利用 maketitle \text{maketitle} maketitle 显示题目。
在每级标题中,主要使用 section \text{section} section sebsection \text{sebsection} sebsection,来进行标题分级,其中
section \text{section} section 第1级标题
subsection \text{subsection} subsection 第2级标题
subsubsection \text{subsubsection} subsubsection 第3级标题
……

\documentclass[11pt]{article}  % article模板
\usepackage[UTF8, scheme = plain]{ctex} % UTF8编码,ctex 可显示中文
\usepackage{geometry} % 页面设置

\geometry{
  a4paper,         % 设置纸张为A4大小
  total={170mm,257mm}, % 设置文本区域的总宽度和高度
  left=25mm,       % 设置左侧边距
  top=25mm,        % 设置上侧边距
  headheight=15mm,  % 设置页眉高度
  headsep=10mm     % 设置页眉与文本之间的间距
}

\title{ \textbf{[ABC185E] Sequence Matching}}
\author{}
\date{} 


\begin{document}

\maketitle

\section{Solution} 
\section{Code}
\section{第三部分}
\subsection{这里是第2级标题}
\subsubsection{这里是第3级标题}

\end{document}

这样就可以得到下面的效果:
在这里插入图片描述
这里数字都是自动编号的,但如果我们不需要编号,可以在 section \text{section} section sebsection \text{sebsection} sebsection 加上 ∗ * 号就可以了。我们再将上面的代码修改一下:

\documentclass[11pt]{article}  % article模板
\usepackage[UTF8, scheme = plain]{ctex} % UTF8编码,ctex 可显示中文
\usepackage{geometry} % 页面设置

\geometry{
  a4paper,         % 设置纸张为A4大小
  total={170mm,257mm}, % 设置文本区域的总宽度和高度
  left=25mm,       % 设置左侧边距
  top=25mm,        % 设置上侧边距
  headheight=15mm,  % 设置页眉高度
  headsep=10mm     % 设置页眉与文本之间的间距
}

\title{ \textbf{[ABC185E] Sequence Matching}}
\author{}
\date{} 


\begin{document}

\maketitle

\section{Solution} 

\subsection*{下面来写一下行内公式:$x^2-y^2=(x-y)(x+y)$。}
\subsection*{再试一下行间公式:}
$$
\begin{aligned}
(x^2-y^2)\times(x+y) & = (x-y)(x+y)(x+y) \\
&=(x-y)(x+y)^2
\end{aligned}
$$

\section{Code}
\section{第三部分}
\subsection{这里是第2级标题}
\subsubsection{这里是第3级标题}

\end{document}

我们在编译这段代码时会提示出错,原因是在写行间公式时,使用的 aligned \text{aligned} aligned 没有引入它的库 amsmath \text{amsmath} amsmath。(通过搜索可以很容易知道在哪个库里)

\documentclass[11pt]{article}  % article模板
\usepackage[UTF8, scheme = plain]{ctex} % UTF8编码,ctex 可显示中文
\usepackage{geometry} % 页面设置

\geometry{
  a4paper,         % 设置纸张为A4大小
  total={170mm,257mm}, % 设置文本区域的总宽度和高度
  left=25mm,       % 设置左侧边距
  top=25mm,        % 设置上侧边距
  headheight=15mm,  % 设置页眉高度
  headsep=10mm     % 设置页眉与文本之间的间距
}

\usepackage{amsmath}


\title{ \textbf{[ABC185E] Sequence Matching}}
\author{}
\date{} 


\begin{document}

\maketitle

\section{Solution} 

\subsection*{下面来写一下行内公式:$x^2-y^2=(x-y)(x+y)$。}
\subsection*{再试一下行间公式:}

$$
\begin{aligned}
(x^2-y^2)\times(x+y) & = (x-y)(x+y)(x+y) \\
&=(x-y)(x+y)^2
\end{aligned}
$$

\section{Code}
\section{第三部分}
\subsection{这里是第2级标题}
\subsubsection{这里是第3级标题}

\end{document}

再来看效果:
在这里插入图片描述

建立内容及 item \textbf{item} item

内容可以直接在对应的 section \text{section} section 后面写就可以了,其中数学符号需要用 Latex \text{Latex} Latex 的表示形式,如加 “$” 符号等。需要加入 item \text{item} item 时,可以用 itemize \text{itemize} itemize 。在第1个 section \text{section} section 后加上下面一段代码:

$f_{i,j}$ 表示 $A$ 序列前 $i-1$ 个字符,$B$ 序列前 $j-1$ 个字符的最小权值。那么,转移分为三种情况:
\begin{itemize}
    \item 不选 $A_i: f_{i+1, j} \leftarrow f_{i, j} + 1$
    \item 不选 $B_j: f_{i, j+1} \leftarrow f_{i, j} + 1$
    \item 选 $A_i$ 和 $B_j: f_{i+1, j+1} \leftarrow f_{i, j} + (A_i \neq B_j)$,如图$\ref{fig:svg1}$。
\end{itemize}

于是,效果就变成了:
在这里插入图片描述

如何实现超链接

超链接需要使用 hyperref \text{hyperref} hyperref ,具体见代码,这里做了注释,就不详细讲了。

\usepackage{hyperref}
\hypersetup{
    colorlinks=true,   % 设置超链接是否带颜色
    linkcolor=red,    % 设置内部链接的颜色
    filecolor=magenta, % 设置文件型链接的颜色
    urlcolor=blue,     % 设置网页链接的颜色
    citecolor=green    % 设置参考文献链接的颜色
}

那么如何使用呢?以本文的 title \text{title} title 为例:

\title{ \href{https://atcoder.jp/contests/abc185/tasks/abc185_e}{\textbf{[ABC185E] Sequence Matching}}}

这里用 href \text{href} href 引用, 另外, textbf \text{textbf} textbf 是为了加粗显示。
将这段加入代码,题目就变成了前言中图的效果了。

插入图片

插入一张 svg \text{svg} svg 图片

因为 Latex \text{Latex} Latex 无法直接插入 svg \text{svg} svg 图片,因此先使用 inkscape \text{inkscape} inkscape svg \text{svg} svg 图片 转为 pdf \text{pdf} pdf ,然后插入

\begin{figure}[htbp]
  \centering % 居中显示图像
  \includegraphics[width=0.2\textwidth]{svg1.pdf} % 插入图像,设置宽度为文本宽度的20%
  \caption{$C^3+C^5$} % 插入图像的标题(caption)
  \label{fig:svg1} % 为图像设置标签,方便在文档中引用
\end{figure}

这里的 figure \text{figure} figure 需要引入 graphicx \text{graphicx} graphicx 库。

插入一张 jpg \text{jpg} jpg 图片

Latex \text{Latex} Latex 可以直接插入 jpg \text{jpg} jpg 图片。

\begin{figure}[htbp]
  \centering % 居中显示图像
  \includegraphics[width=0.2\textwidth]{svg1.pdf} % 插入图像,设置宽度为文本宽度的20%
  \caption{$C^3+C^5$} % 插入图像的标题(caption)
  \label{fig:svg1} % 为图像设置标签,方便在文档中引用
\end{figure}

两段代码在使用 figure \text{figure} figure 时都有参数 htbp \text{htbp} htbp,其中:
h \text{h} h:代表 “ here \text{here} here”,意味着 LaTeX \text{LaTeX} LaTeX 应该尽量将图形放在该代码段所在的位置。
t \text{t} t:代表 “ top \text{top} top”,意味着图形应该放在页面的顶部。
b \text{b} b:代表 “ bottom \text{bottom} bottom”,意味着图形应该放在页面的底部。
p \text{p} p:代表 “ page of floats \text{page\ of\ floats} page of floats”,意味着图形应该单独放在一个浮动页面上,即一个只包含图形的页面。

插入代码

插入代码的有很多种方法,这里我是使用了 algorithm  + minted \text{algorithm } + \text{minted} algorithm +minted 的方法,主要解决了,一是可以精确在上下文之间插入代码,二是在行内插入代码,三是对于长代码段,可以分页显示。

\usepackage{algorithm}
\makeatletter
\newenvironment{breakablealgorithm}
  {% \begin{breakablealgorithm}
   \begin{center}
     \refstepcounter{algorithm}% New algorithm
     \hrule height.8pt depth0pt \kern2pt% \@fs@pre for \@fs@ruled
     \renewcommand{\caption}[2][\relax]{% Make a new \caption
       {\raggedright\textbf{\ALG@name~\thealgorithm} ##2\par}%
       \ifx\relax##1\relax % #1 is \relax
         \addcontentsline{loa}{algorithm}{\protect\numberline{\thealgorithm}##2}%
       \else % #1 is not \relax
         \addcontentsline{loa}{algorithm}{\protect\numberline{\thealgorithm}##1}%
       \fi
       \kern2pt\hrule\kern2pt
     }
  }{% \end{breakablealgorithm}
     \kern2pt\hrule\relax% \@fs@post for \@fs@ruled
   \end{center}
  }
\makeatother
\usepackage{minted} %使用minted库高亮代码

除了引用库以外,中间大段的代码是解决长代码可以分页显示的。
参考:https://zhuanlan.zhihu.com/p/158126932

行内代码

行内加代码比较简单:

这句话用来测试行内代码 $\verb|if led_state == 'on':|$,可以正常显示。

行间代码

hitonanode 的代码 $\ref{code:hitcpp}$ 。
\begin{breakablealgorithm}
   \caption{hitonanode 的代码}
	\label{code:hitcpp}
  \begin{minted}{cpp}
int main()
{
    int N, M;
    cin >> N >> M;
    vector<int> A(N), B(M);
    cin >> A >> B;
    vector dp(N + 2, vector<int>(M + 2, 1 << 30));
    dp[0][0] = 0;
    REP(i, N + 1) REP(j, M + 1) {
        chmin(dp[i][j + 1], dp[i][j] + 1);
        chmin(dp[i + 1][j], dp[i][j] + 1);
        if (i < N and j < M) chmin(dp[i + 1][j + 1], dp[i][j] + (A[i] != B[j]));
    }

    cout << dp[N][M] << '\n';
}
 \end{minted}
\end{breakablealgorithm}

这里第1句是加入了代码的引用。如果一行语句比较长,在显示时想自动换行,需要将 minted \text{minted} minted 后加入 [breaklines] \text{[breaklines]} [breaklines] 参数 。

完成

最终就形成了一篇帅帅的算法学习题解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2211278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DEEP TEMPORAL GRAPH CLUSTERING.md

ICLR23 推荐指数&#xff1a; #paper/⭐ 原因的话&#xff0c;可以找找前人的一篇文章(可以看&#xff0c;但是当你阅读前人文章会发现。) 动机/优点 很明确&#xff0c;时序图只需要考虑时间相近的点&#xff0c;因此开销特别小。但是邻接矩阵&#xff0c;就要考虑所有点的关…

Dockerfile最佳实践:如何创建高效的容器

在微服务和云计算时代&#xff0c;Docker就已经成为应用开发和部署不可或缺的工具。如今虽处大模型时代&#xff0c;但这些基础技术仍然是我们需要掌握的。 容器化允许开发者将应用程序及其依赖打包到一个单一的、可移植的单元中&#xff0c;确保了可预测性、可扩展性和快速部…

反射机制(Reflection)

1. 反射 Java的反射机制(reflection)是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为java语言的反…

创建一个c#程序,实现字符串类型转整数类型

首先&#xff0c;创建一个c#程序 在代码编辑器中编写代码&#xff0c;点击Run按钮或者按下F5键来运行程序。 下面&#xff0c;编写将字符串类型转换为整数类型的代码。 sing System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task…

安装samples/1_Utilities/deviceQuery等文件

本文章摘抄来自https://zhuanlan.zhihu.com/p/666647168 从cuda11.6开始cuda toolkit就不自带cuda-samples了&#xff0c;而deviceQuery又是cuda-sample的一个子库&#xff0c;所以需要自己手动装一下。 我的系统是ubuntu20.04&#xff0c;已经安装了CUDA Toolkit 12.2。 第…

【深度学习】使用FasterRCNN模型训练自己的数据集(记录全流程

此处用的FasterRCNN模型使用的是B导的源码&#xff0c;读者可以去B站搜B导的视频进行了解和学习&#xff0c;视频中B导非常细心讲解了如何训练自己的数据集以及预测。 文章目录 前言一、准备数据集二、环境配置2.1 基础环境2.2 其他依赖包安装2.3 预训练权重下载 二、训练数据集…

程序员成长秘籍:是迈向管理巅峰,还是深耕技术架构?

专业在线打字练习平台-巧手打字通&#xff0c;只输出有价值的知识。 一 管理和架构 做技术的同学一般有两条职业发展路径&#xff0c;横向的管理路线和纵向的技术路线。管理路线对应的是管理岗&#xff0c;讲究的是排兵布阵&#xff0c;通过各种资源的优化配置发挥价值。技术路…

(Linux驱动学习 - 10).MISC驱动实验

一.MISC介绍 1.MISC定义 misc 的意思是混合、杂项的&#xff0c;因此 MISC 驱动也叫做杂项驱动&#xff0c;也就是当我们板子上的某 些外设无法进行分类的时候就可以使用 MISC 驱动。 MISC 驱动其实就是最简单的字符设备驱 动&#xff0c;通常嵌套在 platform 总线驱动中&…

智能贴身监测,健康生活建议,圆道妙医智能手表体验

如今热衷于运动和健康生活的爱好者越来越多&#xff0c;相关的赛事等活动也是逐年增多&#xff0c;很多朋友为了能够直观的了解自己的健康状况&#xff0c;都会配备一款智能手表&#xff0c;这样戴在身上就可以随时了解自己的心率、血氧等数据。最近我尝试了一款圆道妙医推出的…

MobaXterm连接Cloudflare Tunnel内网穿透的SSH

背景 如官方文档所示&#xff0c;Cloudflare Tunnel要求我们对SSH客户端进行配置&#xff0c;使本地的cloudflared软件代理SSH才能连接。 存在问题 由于MobaXterm的Session实质为嵌入式PuTTY&#xff0c;不使用OpenSSH样式的配置文件&#xff08;即~/.ssh/config&#xff09…

SpringBoot框架下购物推荐网站的设计模式与实现

3系统分析 3.1可行性分析 通过对本东大每日推购物推荐网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本东大每日推购物推荐网站采用JAVA作为开发语言&…

对层级聚类树进行模块分割,定位基因在哪个模块中

拷贝数据到 ImageGP (http://www.ehbio.com/Cloud_Platform/front/#/analysis?pageb%27Ng%3D%3D%27)&#xff0c;并设置参数. ID untrt_N61311 untrt_N052611 untrt_N080611 untrt_N061011 trt_N61311 trt_N052611 trt_N080611 trt_N061011 ENSG000…

【ROS2实操二】服务通信

简介 服务通信也是ROS中一种极其常用的通信模式&#xff0c;服务通信是基于请求响应模式的&#xff0c;是一种应答机制。也即&#xff1a;一个节点A向另一个节点B发送请求&#xff0c;B接收处理请求并产生响应结果返回给A。比如如下场景&#xff1a;机器人巡逻过程中&#xff0…

cuda入门学习

最近接触cuda 编程&#xff0c;记录一下。 1 工作实现一个【0-100&#xff09;的加法 如果用python sum 0 for i in range(200):sumi print(sum)2 cuda 的一些简单的概念 一维情况下大概是这样的 (1个grid * 2个blocks * 4个thread) 3 代码直接上代码 我把100分为20个b…

Jenkins---01

什么是敏捷开发 敏捷开发以用户的需求进化为核心&#xff0c;采用迭代、循序渐进的方法进行软件开发。在敏捷开 发中&#xff0c;软件项目在构建初期被切分成多个子项目&#xff0c;各个子项目的成果都经过测试&#xff0c;具备可视、 可集成和可运行使用的特征。换言之&…

2024年编程资料【9月份部分】

资料列表 「CSDN会员免费电子书1000本」 https://pan.quark.cn/s/5019390a751a 【黑马程序员】年度钻石会员-人工智能AI进阶 https://pan.quark.cn/s/1d14a2a179c2 JavaScript从入门到高级教程 - 带源码课件 https://pan.quark.cn/s/c16ed07eac93 【马哥教育】云原生微服务治理…

测试常用插件: ModHeader - Modify HTTP headers插件进行IP模拟/IP欺骗

由于公司是做海外项目的&#xff0c;所以付款时有要求进行模拟不同IP登录进去时会优先显示该地区的支付方式。 1.安装插件 这里以Microsoft Edge为例&#xff0c;打开扩展 搜索&#xff1a;ModHeader - Modify HTTP headers&#xff0c;进行获取安装即可 安装完成后&#xff…

CVESearch部署、使用与原理分析

文章目录 前言1、概述2、安装与使用2.1、源码安装2.1.1、部署系统依赖组件2.1.1.1、下载安装基础组件2.1.1.2、下载安装MongoDB Community Edition 7.0 2.1.2、使用源码安装系统2.1.2.1、安装CVESearch2.1.2.2、填充MongoDB数据库2.1.2.3、填充Redis数据库 2.2、使用方法 3、测…

LeetCode | 704.二分查找

标准的二分查找&#xff0c;直接上模板&#xff01; class Solution(object):def search(self, nums, target):""":type nums: List[int]:type target: int:rtype: int"""l 0r len(nums) - 1while l < r:mid (l r 1) / 2if nums[mid] …

Telnet命令详解:安装、用法及应用场景解析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…