CSDN编程比赛出题规范

CSDN-Ada助手
CSDN-AI 官方账号
2022-12-14 21:27:09

题目内容

题目不得违反国家政策与法律法规,不得出现敏感信息,不得出现强特征的个人、团体、机构等名称。

关于原题

原题大致可分为完全一致、几乎一致和做法一致三种。

  • 完全一致:使用一题的AC代码可以AC另一题
  • 几乎一致:由一题的 AC 代码改动至另一题的 AC 代码可以由一个不会该题的人完成。
  • 做法一致:核心思路、做法一致,但代码实现上、不那么关键的细节上有差异。。

这三种原题自下而上为包含关系。

以下情况不应出现:

  1. 在明知有“几乎一致”的原题的情况下出原题。
  2. 由于未使用搜索引擎查找导致自己不清楚有原题,从而出了“几乎一致”的原题。
  3. 在“做法一致”的原题广为人知(如:NOIP、ACM区域赛、知名比赛网站的常规比赛轮次)时出原题。
  4. 在带有选拔性的考试的非送分题中出现“做法一致”的原题。

以下情况最好不要出现:

  1. 在明知有至少为“做法一致”的原题的情况下出原题。
  2. 由于未使用搜索引擎查找导致自己不清楚有原题,从而出了“做法一致”的原题。
  3. 在任何情况下出“几乎一致”的原题。

题面

题目背景

  • 题面背景最好尽可能简短。如果题目背景比较长的时候,应当与题目描述分开

题目描述

  • 要求清晰易懂

  • 题面中的每个可能不被理解的定义都应得到解释,不应凭空冒出未加定义的概念。如:"子序列"和"子串"的定义,对于一些概存在极限情况的概念也应做解释,如:一个点是否是一棵XX树。

  • 题面中涉及到的每个概念应当使用单一的词汇来描述。如:不应一会儿说“费用”,一会儿说“代价“。

  • 保证你的题面不会自相矛盾,保证题面不能被错误理解而自圆其说,即使这种理解是反常识、没有人会这么去想的。

  • 顺着读题目描述应当能看懂每一句话,并理解题目的任务与要求。不能需要看了输入输出格式才能明白题意,甚至需要根据样例来猜题意。

  • 同一题目的变量名大小写应该同一,不应出现在某处是NN,而在另一处变成nn的情况。同时建议变量与题目相关时使用小写,无关时(如数据组数TT)使用大写。

  • 题目中的公式符号和数字都应用LaTeXLaTeX书写,

数据范围

  • 数据范围都统一为写在输入格式里,数据范围中最容易犯的错误就是不完整。输入中的每一个数、每一个字符串都应该有清晰的界定。在上文所给出的输入输出格式示例中就有一些数据范围的正确写法。

  • 数据类型(如整数、实数、字符等)应在输入格式中说明,数据范围应在说明/提示中说明。数据范围必须有上界和下界的描述,字符串必须有字符集的描述,实数必须有小数点后位数的描述。因此输入格式中不必说明「正整数」或「非负整数」而只需说明「整数」。

数据范围的常见遗漏:

  1. “整数”中的“整”。
  2. 题面中只说了是“整数”没说是“正整数”,并且数据范围中只有上限没有下限。
  3. 字符串没说字符集。
  4. 实数没说小数点后位数。
  5. 某些变量没有给范围。

你需要保证标程可以通过满足题面所述数据范围的任何一组数据。

样例

  • 样例应当有一定的强度,能够查出一些简单的错误。读错题意的人应当能够通过样例发现自己读错了题意。
  • 有多种操作的题,每种操作都应在样例中出现。有多种输出的题,每种可能的输出都应在样例中出现。
  • 如果提供大样例,可以在数据范围处用 markdown 的链接指向一个剪贴板或网盘,而非直接简单地粘贴到样例里面。

样例说明

  • 题目描述越复杂、越不易理解就越应当有详细的样例说明,题目难度越简单就越应当有详细的样例说明。一般来说,一道题至少应该有一个样例说明。

下面是一道样例题目的结构:

# {题目名称}

{题目描述}

## 输入描述

{输入描述}

## 输出描述

{输出描述}

## 输入样例

{输入样例}

## 输出样例

{输出样例}

## 提示

{提示}

以上 { }中均是要填写的内容

其中, 输入样例输出样例不要填写任何多余的文本, 如: 结果是: 0, 其中的: 结果是: 都是多余的内容.

一套完整的题目, 应至少包含四道题, 其中每个难度等级的题目数量如下:

简单: 1
中等: 2
困难: 1

以下是一套完整的题目的目录结构:

{{csdn}}
├── 中等
│   ├── {{示例2}}
│   │   ├── exercises.md
│   │   ├── solution.java
│   │   └── test_cases
│   │       ├── 1.in
│   │       ├── 1.out
│   │       ├── 10.in
│   │       ├── 10.out
│   │       ├── 2.in
│   │       ├── 2.out
│   │       ├── 3.in
│   │       ├── 3.out
│   │       ├── 4.in
│   │       ├── 4.out
│   │       ├── 5.in
│   │       ├── 5.out
│   │       ├── 6.in
│   │       ├── 6.out
│   │       ├── 7.in
│   │       ├── 7.out
│   │       ├── 8.in
│   │       ├── 8.out
│   │       ├── 9.in
│   │       └── 9.out
│   └── {{示例3}}
│       ├── exercises.md
│       ├── solution.java
│       └── test_cases
│           ├── 1.in
│           ├── 1.out
│           ├── 10.in
│           ├── 10.out
│           ├── 2.in
│           ├── 2.out
│           ├── 3.in
│           ├── 3.out
│           ├── 4.in
│           ├── 4.out
│           ├── 5.in
│           ├── 5.out
│           ├── 6.in
│           ├── 6.out
│           ├── 7.in
│           ├── 7.out
│           ├── 8.in
│           ├── 8.out
│           ├── 9.in
│           └── 9.out
├── 困难
│   └── {{示例4}}
│       ├── exercises.md
│       ├── solution.c
│       └── test_cases
│           ├── 1.in
│           ├── 1.out
│           ├── 10.in
│           ├── 10.out
│           ├── 2.in
│           ├── 2.out
│           ├── 3.in
│           ├── 3.out
│           ├── 4.in
│           ├── 4.out
│           ├── 5.in
│           ├── 5.out
│           ├── 6.in
│           ├── 6.out
│           ├── 7.in
│           ├── 7.out
│           ├── 8.in
│           ├── 8.out
│           ├── 9.in
│           └── 9.out
└── 简单
    └── {{示例1}}
        ├── exercies.md
        ├── solution.c
        └── test_cases
            ├── 1.in
            ├── 1.out
            ├── 10.in
            ├── 10.out
            ├── 2.in
            ├── 2.out
            ├── 3.in
            ├── 3.out
            ├── 4.in
            ├── 4.out
            ├── 5.in
            ├── 5.out
            ├── 6.in
            ├── 6.out
            ├── 7.in
            ├── 7.out
            ├── 8.in
            ├── 8.out
            ├── 9.in
            └── 9.out

每道题请至少提供十个测试用例

其中, {{csdn}}中的 csdn , 替换为题目的作者

{{示例x}}中的 示例x 替换为题目名称

solution.x为标程文件, 请至少提供一种编程语言的标程

除标程的文件类型可以不一样外, 其他文件名及文件类型, 必须与题目目录文件结构中的文件名及文件类型一致

仓库地址: https://gitcode.net/csdn/contest_exercises_template

联系我们

如果您有意愿参与出题,可扫码联系我们。

最终解释权归CSDN所有。

...全文
3192 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
奋力向前123 2023-02-24
精选
  • 打赏
  • 举报
回复
34.00元
3
老司机最近比较忙,没时间写博客。只能用红包来互动,红包是最好的互动放弃,希望各位大佬多关注,多三连。
幻灰龙 2023-02-24
  • 举报
回复 1
@奋力向前123 要写博客啊,博客评论区支持发红包啦
奋力向前123 2023-02-24
  • 举报
回复 1
@幻灰龙 那就给我打赏吧,哈哈哈
SoftwareTeacher 2023-02-24
精选
  • 打赏
  • 举报
回复
20.00元
3

演示发红包!

奋力向前123 2023-02-24
  • 举报
回复 1
@SoftwareTeacher 这个包不错
幻灰龙 2023-02-24
精选
  • 打赏
  • 举报
回复 1
  1. fork仓库到自己的gitcode账号
  2. 本地使用git克隆下代码仓库
  3. 使用 vscode 打开
  4. 在 exercises 目录下创建一个个人目录,包含 简单中等困难 三个子目录,每个子目录添加一个 .gitkeep 空文件
  5. 参考 exercises/huanhuilong/中等/查找点在自然区间的坐标 的习题目录,添加一个自己的比赛习题。比赛习题可以来自自己以前写过的代码里的实际的小算法改造,也可以是新颖的设计。
  6. 习题添加了样本代码、10个以上测试用例后,通过测试后提交到git仓库。
  7. 在gitcode上向上游仓库 https://gitcode.net/csdn/contest_exercises_template 提交 pull-request
幻灰龙 2023-02-24
  • 举报
回复
@幻灰龙 8. 可以使用chatGPT出题、生成代码、生成测试用例,但是要人工校验。
  • 打赏
  • 举报
回复

插花问题,假设花坛无限长,花的周围不允许有花 如 1 0 1 0 0 1
假设现有一个花坛 int add[]={0,1,0,0,1,0,1,0,0,0,0,0,0,1}; 最多可以插多少朵花。

花坛的长度不限制,可以自由设置,输入花坛后 如 int add[]={0,1,0,0,1,0,1,0,0,0,0,0,0,1}; 可以输出插入花后的花坛 0,1,0,0,1,0,1,0,1,0,1,1,0,1
输出最多可以插入多少朵花(必需要求)

liranke 2023-02-25
  • 打赏
  • 举报
回复

老司机继续努力加油,输出优质文章,学习了。

SoftwareTeacher 2023-02-24
  • 打赏
  • 举报
回复

题目描述:返回一个数组中距离最近的两个数,这个数组中没有重复数字,并且答案是唯一的。输出的时候,小的数字在前,大的数字在后。中间用逗号(,) 隔开。
例如:
测试用例1:
输入: 5, 5, 1, -2, 2, 18
返回: 1,2。

测试用例2:
输入: 2,100,200
返回:100,200

测试用例3: ( 6 个元素的数组 )
输入: 6, -1, -100, 20, 0,-98, 17
输出: -1,0

ToTensor 2023-02-24
  • 举报
回复
@SoftwareTeacher 该代码由chatgpt生成 ```c #include <stdio.h> #include <stdlib.h> int main() { int n, i, j, min_diff, index1, index2; scanf("%d", &n); // 读入数组元素 int arr[n]; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } // 排序 for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j+1]) { int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } // 找出最小的差值 min_diff = abs(arr[1] - arr[0]); index1 = 0; index2 = 1; for (i = 1; i < n - 1; i++) { int diff = abs(arr[i+1] - arr[i]); if (diff < min_diff) { min_diff = diff; index1 = i; index2 = i + 1; } } // 输出结果 printf("%d,%d", arr[index1], arr[index2]); return 0; } ```
skywalkert 2022-12-14
  • 打赏
  • 举报
回复 2

3,753

社区成员

发帖
与我相关
我的任务
社区描述
CSDN竞赛为鼓励各位开发者积极参与开发相关的技能评测,帮助开发者在练习与学习的过程中取长补短,提升个人专项能力。 本大赛面向所有开发同学,报名参与即可来挑战,并有CSDN周边精美礼品及荣誉激励
其他 其他
社区管理员
  • CSDN学习
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧