出题人须知

本文介绍了Markdown的使用,包括换行、超链接、图片、表格等,以及LaTeX的基础知识,如公式输入和上下标。此外,还讲解了在Linux系统中生成题目数据的常用命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假如你想使题面美观,请认真研究第一、二部分。

假如你想学习如何出数据,请直接翻到第三部分。(优快云右边有目录)

第一部分 Markdown

如果想要认真学习Markdown语法,请看这些文章:

  1. Markdown的使用-标题
  2. Markdown的使用-正文
  3. Markdown的使用-代码
  4. Markdown的使用-列表
  5. Markdown的使用-超链接与图片
  6. Markdown的使用-表格
  7. Markdown的使用-引用
  8. Markdown的使用-其他

假如你嫌多的话,下面是一部分比较常用的Markdown语法现象。

换行

首先,在Markdown中,换行是一个重点,留下一个或多个空行表示你需要一个换行符。

例子:
N方过百万,暴力碾标算。

骗分过样例,暴力出奇迹。


N方过百万,暴力碾标算。
骗分过样例,暴力出奇迹。
效果:

N方过百万,暴力碾标算。

骗分过样例,暴力出奇迹。

N方过百万,暴力碾标算。骗分过样例,暴力出奇迹。


超链接

[链接描述](链接地址)

例子:
[洛谷](https://www.luogu.org)
效果:

洛谷


图片

格式:

![图片描述(选填)](图片地址)

注意!是半角字符,ASCII(!)=33

例子:
![作者头像](https://cdn.luogu.org/upload/usericon/38502.png)
效果:

作者头像


图片&链接

[![图片描述(选填)](图片地址)](链接地址)

例子:
[![作者头像](https://cdn.luogu.org/upload/usericon/38502.png)](https://www.luogu.org/space/show?uid=38502)

点击以进入作者的个人空间。
效果:

作者头像

点击以进入作者的个人空间。


关于自定义图片

格式:

https://img.shields.io/badge/一段·文字-二段·文字-颜色(用英文).svg

例子:
![](https://img.shields.io/badge/灰色-洛谷蓝-blue.svg)

![](https://img.shields.io/badge/NOIP-RP++-green.svg)
效果:

更多格式详见ShieldsIO(点击可进入ShieldsIO网站)。


表格

格式:
|标题|标题|标题|
|----|---|----|
|文本|文本|文本|
|文本|文本|文本|
文字的对齐方式
格式:
|左对齐标题|右对齐标题|居中对齐标题|
|:--------|--------:|:---------:|
|短文本|中等文本|稍微长一点的文本 |
|稍微长一点的文本|短文本|中等文本 |
例子:
|转义字符|意义|
|:---:|:---:|
|\a|响铃(BEL)|
|\b|退格(BS) ,将当前位置移到前一列|
效果:

左对齐标题右对齐标题居中对齐标题
短文本中等文本稍微长一点的文本
稍微长一点的文本短文本中等文本
转义字符意义
\a响铃(BEL)
\b退格(BS) ,将当前位置移到前一列

注意事项

  1. 在表格语句中,存在于-:|之间的空格字符将会被忽略,不影响表格的布局;
  2. 不设定对齐方式时,标题默认居中对齐,内容默认居左对齐;
  3. -:表示内容和标题栏居右对齐,:-表示内容和标题栏居左对齐,:-:表示内容和标题栏居中对齐。
  4. 设定对齐方式时,-号的数量不限,但至少有 1 1 1个;
  5. 内容和|之间的多余空格会被忽略,每行第一个|和最后一个|可以省略。

第二部分 学习与使用LaTeX

看大部分题目(洛谷上的),都有很多数学公式,例如:

e = lim ⁡ n → ∞ ( 1 + 1 n ) n e=\lim_{n \to \infty}(1+\frac{1}{n})^{n} e=nlim(1+n1)n

∑ i = 1 n i = n ( n + 1 ) 2 \sum^{n}_{i=1} i =\frac{n(n+1)}{2} i=1ni=2n(n+1)

它们就是使用了 LaTeX \LaTeX LATEX的结果。

LaTex初步

首先,你得会打 LaTeX \LaTeX LATEX

源代码:
$\LaTeX$
效果:

LaTeX \LaTeX LATEX


在条件不允许的情况下,应该交替使用大小写:LaTeX;

LaTeX \LaTeX LATEX把公式分为两种:

  • 行内公式:$<fomula>$,位于文字中间
  • 行外公式(其实我也不知道它叫什么):$$<fomula>$$,独立成行且居中。

注:fomula n. 公式

例子:

公式$a$不是我写的。

但公式$$asjdaisfj$$是我的杰作。
效果:

公式 a a a不是我写的。

但公式 a s j d a i s f j asjdaisfj asjdaisfj是我的杰作。


上下标

难以用文字表述,实践是检验真理的唯一标准,我们直接演示。

例子:
上标:

$a^{10}=9$

$n≤10^{50}$

下标:

$a_{i}$

$a_{1},a_{2},a_{3},...,a_{n}$

混合:

$a^{9}_{5}$

$a^{2^{5}}$

$a_{i_{j}}$

效果:

上标:

a 10 = 9 a^{10}=9 a10=9

n ≤ 1 0 50 n≤10^{50} n1050

下标:

a i a_{i} ai

a 1 , a 2 , a 3 , . . . , a n a_{1},a_{2},a_{3},...,a_{n} a1,a2,a3,...,an

混合:

a 5 9 a^{9}_{5} a59

a 2 5 a^{2^{5}} a25

a i j a_{i_{j}} aij


基础大型符号(运算符)

其实常用的就两个, ∑ \sum 表示累加, ∏ \prod 表示累乘。

例子:
单个符号

$\sum$

$\prod$

行内公式

$\sum^{n}_{i=1}i$

$n!=\prod^{n}_{i=1}$

行外公式

$$\sum^{n}_{i=1}i$$

$$n!=\prod^{n}_{i=1}$$

效果:


单个符号

∑ \sum

∏ \prod

行内公式

∑ i = 1 n i \sum^{n}_{i=1}i i=1ni

n ! = ∏ i = 1 n n!=\prod^{n}_{i=1} n!=i=1n

行外公式

∑ i = 1 n i \sum^{n}_{i=1}i i=1ni

n ! = ∏ i = 1 n i = ∏ i = 2 n i n!=\prod^{n}_{i=1}i=\prod^{n}_{i=2}i n!=i=1ni=i=2ni


如果还想学习更多关于 LaTeX \LaTeX LATEX的公式,请访问 LaTeX \LaTeX LATEX数学公式大全——别人的洛谷博客

第三部分 题目数据

首先,题目的数据最好在Linux系统中生成,推荐使用Ubuntu或者NOI linux虚拟机(方便文件传输)。

Linux下生成数据

下面的操作以Ubuntu为例。

基础知识

L i n u x Linux Linux系统中,按 C t r l + A l t + T Ctrl+Alt+T Ctrl+Alt+T即可打开终端

同时,在图形界面下,在桌面按鼠标右键,选择打开终端选项也可打开终端。

图1-2

终端打开后如下图所示。

图1-2

常用命令
  • ls

    1. 显示当前目录的所有文件与目录(格式: l s ls ls
    ls
    
    1. 显示指定目录的所有文件与目录(格式: l s ls ls+路径)
    ls /home
    
  • cd

    进入指定目录(格式: c d cd cd+路径)

    cd /home/
    
  • mkdir

    新建子目录(格式: m k d i r mkdir mkdir+子目录名称)

    makdir C++
    

    提示:若子目录已存在,则会提示:

      无法创建目录"C++": 文件已存在
    

    其中"C++"为子目录名称。

    此时可加上参数 − p -p p确保目录名称存在,不存在的就建一个。

    mkdir C++ -p
    
  • pwd

    显示当前工作目录的绝对路径(格式: p w d pwd pwd

    pwd
    
  • cp

    将一个目录或文件复制到另一个目录(格式: c p cp cp+文件(或目录)+目标目录)

    cp ./C++ ./A
    
  • mv

    将一个目录或文件移动到另一个目录(格式: m v mv mv+文件(或目录)+目标目录)

    mv ./C++ ./A
    
  • rm

    删除文件或目录,参数:

    • − i -i i 删除前逐一询问确认。

    • − f -f f 即使原档案属性设为只读,也直接删除,无需逐一确认。

    • − r -r r 将目录及以下之档案都删除。

    删除文件可以直接无参数执行,删除目录则需要使用参数 − r -r r

    通常我们可以直接使用 − r f -rf rf参数直接删除指定的目录或文件。

    (格式: r m rm rm+参数+文件或目录的名称)

    rm -rf ./A
    
  • clear

    清空终端屏幕(格式: c l e a r clear clear

    clear
    

    提示: C t r l + L Ctrl+L Ctrl+L有同样的功效。

  • reset

    真正地清空终端屏幕(格式: r e s e t reset reset

    reset
    

    提示:这个命令执行起来有点慢。

  • time

    统计运行时间(格式: t i m e time time+将要运行的文件)

    time ./std #统计名为std的文件的运行时间
    
  • diff

    比较文件差异, − b -b b参数忽略行末空格

    diff -b A.out A.ans
    

具体过程

首先,进入Ubuntu虚拟机后,先要安装g++C++的编译器)。

所以我们执行如下操作:

  1. 打开终端(按Ctrl+Alt+T);
  2. 输入命令;
    sudo apt install g++
    
  3. 输入当前用户的密码(没有回显,直接输入即可)并按Enter
  4. 根据提示进行选择(你可以一路按Enter);
  5. 完成。

再然后,自己写好三个文件data.cpp,std.cpp,work.cpp,放在同一目录下。

data.cpp

data.cpp是生成数据程序的源代码,一般我们使用随机数生成器。

std.cpp

std.cpp是这题的标准程序。

work.cpp

work.cpp是生成数据的主体,它的代码如下:

#define NUMBER_OF_TEST 10
//表示测试点个数
#define NAME_OF_PROBLEM "count"
//表示问题名称,一定要有双引号(半角),题目名称长度不可超过2^10

#include<cstdio>
#include<cstdlib>

char str[2048];

int main(void){
	register int i;
	system("g++ data.cpp -o data");
	for(i=1;i<=NUMBER_OF_TEST;++i){
		sprintf(str,"./data > %s%d.in",NAME_OF_PROBLEM,i);
		system(str);
	}
	system("g++ std.cpp -o std");
	for(i=1;i<=NUMBER_OF_TEST;++i){
		sprintf(str,"./std < %s%d.in > %s%d.out",NAME_OF_PROBLEM,i,NAME_OF_PROBLEM,i);
		system(str);
	}
	return 0;
}

编辑好三个文件之后,在文件夹内打开终端(或打开终端并cd到此文件夹中),输入如下命令:

g++ work.cpp -o work
./work

如果不出意外的话,数据就会出现在文件夹内。打包上传即可。

可能上面的内容比较生硬,我们找一个具体例子(题目combination)来看。

例子:
题面:(Markdown原文,请自己查看)
## combination

### 题目背景

本题考查阅读理解能力,是一道水题(假如你读懂了题目的话)。

本题难度![](https://img.shields.io/badge/难度-入门-red.svg)。

### 题目描述

给定正整数$n,m$,求解$C ^ {m} _ {n}$是奇数还是偶数。

### 输入输出格式

#### 输入格式:

输入共一行,为两个整数$n,m$。

#### 输出格式:

一行,若$C ^ {m} _ {n}$为奇数输出`odd`,否则输出`even`。

### 输入输出样例

#### 输入样例#1:

```
2 1

```

#### 输出样例#1:

```
even

```

#### 输入样例#2:

```
1 1

```

#### 输出样例#2:

```
odd

```

### 说明

本题共$10$个测试点。

对于$70\%$的数据,$1 \leq m \leq n \leq 10^{6}$;

对于$100\%$的数据,$1 \leq m \leq n \leq 10^{17}$;

时空限制:$1 \text {s} / 256 \text {MB}$。

提示:

$$ C^{m}_{n} \equiv C^{m/p}_{n/p} \times C^{m\%p}_{n\%p} (mod \  p) \text {(p 为素数)} $$

data.cpp
#include<cstdio>

int main(void){
	printf("%d %d\n",rand(),rand());
	return 0;
}
std.cpp
#include<cstdio>

long long n,m;

int main(void){
	scanf("%lld%lld",&n,&m);
	if((n&m)==m)
		puts("odd");
	else
		puts("even");
	return 0;
}
work.cpp
#define NUMBER_OF_TEST 50
//表示测试点个数
#define NAME_OF_PROBLEM "combination"
//表示问题名称,一定要有双引号(半角),题目名称长度不可超过2^10

#include<cstdio>
#include<cstdlib>

char str[2048];

int main(void){
	register int i;
	system("g++ data.cpp -o data");
	for(i=1;i<=NUMBER_OF_TEST;++i){
		sprintf(str,"./data > %s%d.in",NAME_OF_PROBLEM,i);
		system(str);
	}
	system("g++ std.cpp -o std");
	for(i=1;i<=NUMBER_OF_TEST;++i){
		sprintf(str,"./std < %s%d.in > %s%d.out",NAME_OF_PROBLEM,i,NAME_OF_PROBLEM,i);
		system(str);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值