feat: 添加NOI入门级完整学习手册
- 45页详细PDF学习文档 - 89个知识点全覆盖,含详细说明和代码示例 - AI模型重评分(81个知识点评分变化,黄色高亮标记) - 基于全网深度调研(CSP-J历年真题考点分析) - 涵盖:基础知识、C++程序设计、数据结构、算法、数学
这个提交包含在:
1446
NOI_Beginner_Guide_2025.html
普通文件
1446
NOI_Beginner_Guide_2025.html
普通文件
文件差异内容过多而无法显示
加载差异
二进制
NOI_Beginner_Guide_2025.pdf
普通文件
二进制
NOI_Beginner_Guide_2025.pdf
普通文件
二进制文件未显示。
47
README.md
47
README.md
@@ -1,3 +1,46 @@
|
||||
# noi-beginner-guide
|
||||
# NOI 入门级完整学习手册
|
||||
|
||||
NOI 入门级完整学习手册(2025年修订版)- 含全网调研AI重评分、详细知识点讲解与代码示例
|
||||
基于 **NOI 大纲(2025年修订版)**,包含全网深度调研AI重评分、详细知识点讲解与代码示例。
|
||||
|
||||
## 文档概述
|
||||
|
||||
本仓库提供 NOI(全国青少年信息学奥林匹克竞赛)入门级的完整学习资料,覆盖 CSP-J 认证所需的全部知识点。
|
||||
|
||||
## 内容结构
|
||||
|
||||
| 章节 | 内容 | 知识点数量 |
|
||||
|------|------|----------|
|
||||
| 第一章 | 基础知识与编程环境 | 12 |
|
||||
| 第二章 | C++程序设计 | 22 |
|
||||
| 第三章 | 数据结构 | 13 |
|
||||
| 第四章 | 算法 | 25 |
|
||||
| 第五章 | 数学与其他 | 17 |
|
||||
| 附录 | 评分变化汇总表 | 89 |
|
||||
|
||||
## 特色功能
|
||||
|
||||
**AI 重评分系统**:基于全网深度调研(CSP-J 历年真题考点分析、竞赛趋势报告),使用 AI 模型对每个知识点的难度和重要性进行重新评估。评分变化的知识点以黄色背景高亮标记,便于识别重点。
|
||||
|
||||
评分维度包括:考试重要性(考频)、学习难度、区分度(拉开差距能力)、实用性(竞赛应用广度),综合评分 1-10 分。
|
||||
|
||||
## 文件说明
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `NOI_Beginner_Guide_2025.pdf` | 完整学习手册 PDF 版本(45页) |
|
||||
| `NOI_Beginner_Guide_2025.html` | 完整学习手册 HTML 源文件 |
|
||||
| `ai_scores.json` | AI 模型评分数据(JSON 格式) |
|
||||
| `ai_scoring.py` | AI 评分脚本 |
|
||||
| `generate_detailed_doc.py` | 文档生成脚本 |
|
||||
| `research_findings.txt` | 全网调研数据 |
|
||||
|
||||
## 数据来源
|
||||
|
||||
1. [NOI 大纲(2025年修订版)](https://www.noi.cn/xw/2025-04-18/841584.shtml)
|
||||
2. CSP-J 历年复赛真题考察内容(2010-2023)考点分析
|
||||
3. CSP-J/S 2025 入门级题目知识构成分析报告
|
||||
4. AI 模型评分(gpt-4.1-mini)
|
||||
|
||||
## 许可
|
||||
|
||||
本文档仅供学习参考使用。NOI 大纲版权归中国计算机学会(CCF)所有。
|
||||
|
||||
714
ai_scores.json
普通文件
714
ai_scores.json
普通文件
@@ -0,0 +1,714 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "计算机的基本构成",
|
||||
"original_score": 1,
|
||||
"new_score": 2,
|
||||
"changed": true,
|
||||
"reason": "基础重要,竞赛环境必备"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "操作系统基本概念及常见操作",
|
||||
"original_score": 1,
|
||||
"new_score": 2,
|
||||
"changed": true,
|
||||
"reason": "环境操作基础,实用性提升"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "计算机网络和Internet基本概念",
|
||||
"original_score": 1,
|
||||
"new_score": 1,
|
||||
"changed": false,
|
||||
"reason": "竞赛中应用较少"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "计算机的历史和常见用途",
|
||||
"original_score": 1,
|
||||
"new_score": 1,
|
||||
"changed": false,
|
||||
"reason": "理论性强,实用性低"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "NOI相关活动的历史与规则",
|
||||
"original_score": 1,
|
||||
"new_score": 1,
|
||||
"changed": false,
|
||||
"reason": "非技术核心内容"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "位、字节与字",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "位运算基础,竞赛常用"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "程序设计语言及编译运行基本概念",
|
||||
"original_score": 1,
|
||||
"new_score": 2,
|
||||
"changed": true,
|
||||
"reason": "理解编译流程重要"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "文件/目录的图形界面操作",
|
||||
"original_score": 1,
|
||||
"new_score": 1,
|
||||
"changed": false,
|
||||
"reason": "竞赛中应用少"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "Windows/Linux集成开发环境使用",
|
||||
"original_score": 1,
|
||||
"new_score": 2,
|
||||
"changed": true,
|
||||
"reason": "开发环境熟悉度重要"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "编译命令g++的基本使用",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "编译命令基础,实用性强"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "标识符、关键字、常量、变量、表达式",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "编程基础,必备知识"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "常量与变量的命名、定义及作用",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "基础语法,重要性提升"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "头文件与名字空间",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "代码组织关键"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "编辑、编译、解释、调试概念",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "调试能力重要"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "基本数据类型(int,long long,float,double,char,bool)",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "类型理解基础"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "输入输出语句(cin/cout/scanf/printf)",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "IO基础,频繁使用"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "条件语句(if/switch)",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "控制流基础"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "循环语句(for/while/do while)",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "循环结构核心"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "多层循环语句",
|
||||
"original_score": 3,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "复杂度提升,常见考点"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "算术/关系/逻辑运算",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "运算基础,频繁使用"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "位运算",
|
||||
"original_score": 2,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "高频考点,难度较大"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "数学库常用函数",
|
||||
"original_score": 3,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "数学思维增强"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "顺序/分支/循环结构",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "基础结构,重要性提升"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "模块化程序设计与流程图",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "代码组织与设计"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "数组与数组下标",
|
||||
"original_score": 1,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "基础数据结构,应用广"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "二维数组与多维数组",
|
||||
"original_score": 3,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "常见数据结构"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "字符数组与string类",
|
||||
"original_score": 2,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "字符串处理基础"
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "函数定义与调用、递归函数",
|
||||
"original_score": 2,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "递归难点,重要考点"
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "传值与传引用参数",
|
||||
"original_score": 3,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "参数传递细节重要"
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "结构体与联合体",
|
||||
"original_score": 3,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "数据组织关键"
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "指针与引用",
|
||||
"original_score": 4,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "核心难点,区分度高"
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "文件读写",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "竞赛中偶尔应用"
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "STL常用函数(min/max/swap/sort)",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "高频实用,效率提升"
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "STL容器(stack/queue/list/vector)",
|
||||
"original_score": 4,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "竞赛必备,应用广泛"
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "链表(单/双向/循环)",
|
||||
"original_score": 3,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "数据结构基础"
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "栈",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "高频考点,应用广"
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "队列",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "高频考点,应用广"
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "树的定义与基本概念",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "基础数据结构"
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "二叉树定义与基本性质",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "基础树结构"
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"name": "树/二叉树的表示与存储",
|
||||
"original_score": 4,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "存储实现关键"
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"name": "二叉树的遍历(前序/中序/后序)",
|
||||
"original_score": 4,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "遍历是基础技能"
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "完全二叉树定义、性质与数组表示",
|
||||
"original_score": 4,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "重要树结构"
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"name": "哈夫曼树与哈夫曼编码",
|
||||
"original_score": 4,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "经典算法,应用有限"
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"name": "二叉搜索树",
|
||||
"original_score": 4,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "重要树结构"
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"name": "图的定义与相关概念",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "图论基础"
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"name": "图的存储(邻接矩阵/邻接表)",
|
||||
"original_score": 4,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "图论基础实现"
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"name": "算法概念",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "基础理论重要"
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"name": "算法描述(自然语言/流程图/伪代码)",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "表达能力提升"
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"name": "枚举法",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "基础解题方法"
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"name": "模拟法",
|
||||
"original_score": 1,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "高频考点,实用性强"
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"name": "贪心法",
|
||||
"original_score": 3,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "高频且区分度高"
|
||||
},
|
||||
{
|
||||
"id": 52,
|
||||
"name": "递推法",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "动态规划基础"
|
||||
},
|
||||
{
|
||||
"id": 53,
|
||||
"name": "递归法",
|
||||
"original_score": 4,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "重要思维方式"
|
||||
},
|
||||
{
|
||||
"id": 54,
|
||||
"name": "二分法",
|
||||
"original_score": 4,
|
||||
"new_score": 7,
|
||||
"changed": true,
|
||||
"reason": "高频且效率关键"
|
||||
},
|
||||
{
|
||||
"id": 55,
|
||||
"name": "倍增法",
|
||||
"original_score": 4,
|
||||
"new_score": 7,
|
||||
"changed": true,
|
||||
"reason": "新增高效技巧"
|
||||
},
|
||||
{
|
||||
"id": 56,
|
||||
"name": "前缀和",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "常用优化技巧"
|
||||
},
|
||||
{
|
||||
"id": 57,
|
||||
"name": "差分",
|
||||
"original_score": 4,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "新增且实用"
|
||||
},
|
||||
{
|
||||
"id": 58,
|
||||
"name": "高精度运算",
|
||||
"original_score": 4,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "应用有限但难度较高"
|
||||
},
|
||||
{
|
||||
"id": 59,
|
||||
"name": "排序基本概念",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "基础且频繁"
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"name": "冒泡排序",
|
||||
"original_score": 3,
|
||||
"new_score": 3,
|
||||
"changed": false,
|
||||
"reason": "基础教学用"
|
||||
},
|
||||
{
|
||||
"id": 61,
|
||||
"name": "选择排序",
|
||||
"original_score": 3,
|
||||
"new_score": 3,
|
||||
"changed": false,
|
||||
"reason": "基础教学用"
|
||||
},
|
||||
{
|
||||
"id": 62,
|
||||
"name": "插入排序",
|
||||
"original_score": 3,
|
||||
"new_score": 3,
|
||||
"changed": false,
|
||||
"reason": "基础教学用"
|
||||
},
|
||||
{
|
||||
"id": 63,
|
||||
"name": "计数排序",
|
||||
"original_score": 3,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "常用优化排序"
|
||||
},
|
||||
{
|
||||
"id": 64,
|
||||
"name": "深度优先搜索(DFS)",
|
||||
"original_score": 5,
|
||||
"new_score": 8,
|
||||
"changed": true,
|
||||
"reason": "高频关键算法"
|
||||
},
|
||||
{
|
||||
"id": 65,
|
||||
"name": "广度优先搜索(BFS)",
|
||||
"original_score": 5,
|
||||
"new_score": 8,
|
||||
"changed": true,
|
||||
"reason": "高频关键算法"
|
||||
},
|
||||
{
|
||||
"id": 66,
|
||||
"name": "图的深度优先遍历",
|
||||
"original_score": 4,
|
||||
"new_score": 7,
|
||||
"changed": true,
|
||||
"reason": "图论核心算法"
|
||||
},
|
||||
{
|
||||
"id": 67,
|
||||
"name": "图的广度优先遍历",
|
||||
"original_score": 4,
|
||||
"new_score": 7,
|
||||
"changed": true,
|
||||
"reason": "图论核心算法"
|
||||
},
|
||||
{
|
||||
"id": 68,
|
||||
"name": "泛洪算法(Flood Fill)",
|
||||
"original_score": 5,
|
||||
"new_score": 7,
|
||||
"changed": true,
|
||||
"reason": "常见应用,区分度高"
|
||||
},
|
||||
{
|
||||
"id": 69,
|
||||
"name": "动态规划基本思路",
|
||||
"original_score": 4,
|
||||
"new_score": 9,
|
||||
"changed": true,
|
||||
"reason": "拉开差距关键"
|
||||
},
|
||||
{
|
||||
"id": 70,
|
||||
"name": "简单一维动态规划",
|
||||
"original_score": 4,
|
||||
"new_score": 9,
|
||||
"changed": true,
|
||||
"reason": "基础DP,频繁考"
|
||||
},
|
||||
{
|
||||
"id": 71,
|
||||
"name": "简单背包类型动态规划",
|
||||
"original_score": 5,
|
||||
"new_score": 9,
|
||||
"changed": true,
|
||||
"reason": "高频难点"
|
||||
},
|
||||
{
|
||||
"id": 72,
|
||||
"name": "简单区间类型动态规划",
|
||||
"original_score": 5,
|
||||
"new_score": 9,
|
||||
"changed": true,
|
||||
"reason": "高频难点"
|
||||
},
|
||||
{
|
||||
"id": 73,
|
||||
"name": "自然数/整数/有理数/实数及运算",
|
||||
"original_score": 1,
|
||||
"new_score": 2,
|
||||
"changed": true,
|
||||
"reason": "基础数学知识"
|
||||
},
|
||||
{
|
||||
"id": 74,
|
||||
"name": "进制与进制转换",
|
||||
"original_score": 1,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "竞赛常用基础"
|
||||
},
|
||||
{
|
||||
"id": 75,
|
||||
"name": "代数(初中部分)",
|
||||
"original_score": 1,
|
||||
"new_score": 2,
|
||||
"changed": true,
|
||||
"reason": "基础数学"
|
||||
},
|
||||
{
|
||||
"id": 76,
|
||||
"name": "几何(初中部分)",
|
||||
"original_score": 1,
|
||||
"new_score": 2,
|
||||
"changed": true,
|
||||
"reason": "基础数学"
|
||||
},
|
||||
{
|
||||
"id": 77,
|
||||
"name": "整除/因数/倍数/质数/合数",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "数学基础,频繁考"
|
||||
},
|
||||
{
|
||||
"id": 78,
|
||||
"name": "取整",
|
||||
"original_score": 3,
|
||||
"new_score": 4,
|
||||
"changed": true,
|
||||
"reason": "数学技巧"
|
||||
},
|
||||
{
|
||||
"id": 79,
|
||||
"name": "模运算与取余",
|
||||
"original_score": 3,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "高频数学技巧"
|
||||
},
|
||||
{
|
||||
"id": 80,
|
||||
"name": "整数唯一分解定理",
|
||||
"original_score": 3,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "数学基础"
|
||||
},
|
||||
{
|
||||
"id": 81,
|
||||
"name": "辗转相除法(欧几里得算法)",
|
||||
"original_score": 3,
|
||||
"new_score": 6,
|
||||
"changed": true,
|
||||
"reason": "高频数学算法"
|
||||
},
|
||||
{
|
||||
"id": 82,
|
||||
"name": "素数筛法(埃氏筛/线性筛)",
|
||||
"original_score": 4,
|
||||
"new_score": 7,
|
||||
"changed": true,
|
||||
"reason": "高频数学算法"
|
||||
},
|
||||
{
|
||||
"id": 83,
|
||||
"name": "集合",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "基础数学概念"
|
||||
},
|
||||
{
|
||||
"id": 84,
|
||||
"name": "加法原理",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "组合数学基础"
|
||||
},
|
||||
{
|
||||
"id": 85,
|
||||
"name": "乘法原理",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "组合数学基础"
|
||||
},
|
||||
{
|
||||
"id": 86,
|
||||
"name": "排列",
|
||||
"original_score": 4,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "组合数学重要"
|
||||
},
|
||||
{
|
||||
"id": 87,
|
||||
"name": "组合",
|
||||
"original_score": 4,
|
||||
"new_score": 5,
|
||||
"changed": true,
|
||||
"reason": "组合数学重要"
|
||||
},
|
||||
{
|
||||
"id": 88,
|
||||
"name": "杨辉三角",
|
||||
"original_score": 4,
|
||||
"new_score": 4,
|
||||
"changed": false,
|
||||
"reason": "基础数学工具"
|
||||
},
|
||||
{
|
||||
"id": 89,
|
||||
"name": "ASCII码",
|
||||
"original_score": 2,
|
||||
"new_score": 3,
|
||||
"changed": true,
|
||||
"reason": "字符串处理基础"
|
||||
}
|
||||
]
|
||||
175
ai_scoring.py
普通文件
175
ai_scoring.py
普通文件
@@ -0,0 +1,175 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
调用AI模型对NOI入门级知识点进行重新评分
|
||||
基于全网调研数据(CSP-J历年真题考频、难度趋势、2025大纲修订)
|
||||
"""
|
||||
import json
|
||||
from openai import OpenAI
|
||||
|
||||
client = OpenAI()
|
||||
|
||||
# 入门级所有知识点及其原始评分
|
||||
knowledge_points = """
|
||||
以下是NOI大纲(2025年修订版)入门级的所有知识点及其原始难度评级(1-5分)。
|
||||
请你作为NOI竞赛专家,结合以下调研数据,对每个知识点重新评分。
|
||||
|
||||
调研数据:
|
||||
1. CSP-J历年真题(2010-2025)考点频率分析:
|
||||
- T1高频:模拟法、整数拆分/数位分离、字符串基础、数学
|
||||
- T2高频:模拟、贪心、排序、队列、二分、时间复杂度优化
|
||||
- T3高频:动态规划(线性DP/背包DP)、数据结构(栈/队列/树)、BFS/DFS、字符串大模拟
|
||||
- T4高频:DP/图论/树型数据结构、最短路、拓扑排序
|
||||
2. 近年趋势:难度持续上升,时间复杂度优化成标配,数学思维考察增多
|
||||
3. DP是CSP-J拉开差距的关键考点
|
||||
4. 2025年大纲新增了倍增法、差分等知识点
|
||||
|
||||
评分维度(综合以下4个维度给出1-10分的综合评分):
|
||||
- 考试重要性(考频高=分高)
|
||||
- 学习难度(越难=分越高)
|
||||
- 区分度(能拉开差距=分高)
|
||||
- 实用性(在实际竞赛中的应用广度)
|
||||
|
||||
请对以下每个知识点给出:
|
||||
1. 新的综合评分(1-10分)
|
||||
2. 是否与原始评分不同(标记changed=true/false)
|
||||
3. 简短的评分理由(20字以内)
|
||||
|
||||
知识点列表(格式:编号 | 知识点名称 | 原始评级):
|
||||
|
||||
=== 2.1.1 基础知识与编程环境 ===
|
||||
1 | 计算机的基本构成 | 1
|
||||
2 | 操作系统基本概念及常见操作 | 1
|
||||
3 | 计算机网络和Internet基本概念 | 1
|
||||
4 | 计算机的历史和常见用途 | 1
|
||||
5 | NOI相关活动的历史与规则 | 1
|
||||
6 | 位、字节与字 | 1
|
||||
7 | 程序设计语言及编译运行基本概念 | 1
|
||||
8 | 文件/目录的图形界面操作 | 1
|
||||
9 | Windows/Linux集成开发环境使用 | 1
|
||||
10 | 编译命令g++的基本使用 | 1
|
||||
|
||||
=== 2.1.2 C++程序设计 ===
|
||||
11 | 标识符、关键字、常量、变量、表达式 | 1
|
||||
12 | 常量与变量的命名、定义及作用 | 1
|
||||
13 | 头文件与名字空间 | 2
|
||||
14 | 编辑、编译、解释、调试概念 | 2
|
||||
15 | 基本数据类型(int,long long,float,double,char,bool) | 1
|
||||
16 | 输入输出语句(cin/cout/scanf/printf) | 2
|
||||
17 | 条件语句(if/switch) | 2
|
||||
18 | 循环语句(for/while/do while) | 2
|
||||
19 | 多层循环语句 | 3
|
||||
20 | 算术/关系/逻辑运算 | 1
|
||||
21 | 位运算 | 2
|
||||
22 | 数学库常用函数 | 3
|
||||
23 | 顺序/分支/循环结构 | 1
|
||||
24 | 模块化程序设计与流程图 | 2
|
||||
25 | 数组与数组下标 | 1
|
||||
26 | 二维数组与多维数组 | 3
|
||||
27 | 字符数组与string类 | 2
|
||||
28 | 函数定义与调用、递归函数 | 2
|
||||
29 | 传值与传引用参数 | 3
|
||||
30 | 结构体与联合体 | 3
|
||||
31 | 指针与引用 | 4
|
||||
32 | 文件读写 | 2
|
||||
33 | STL常用函数(min/max/swap/sort) | 3
|
||||
34 | STL容器(stack/queue/list/vector) | 4
|
||||
|
||||
=== 2.1.3 数据结构 ===
|
||||
35 | 链表(单/双向/循环) | 3
|
||||
36 | 栈 | 3
|
||||
37 | 队列 | 3
|
||||
38 | 树的定义与基本概念 | 3
|
||||
39 | 二叉树定义与基本性质 | 3
|
||||
40 | 树/二叉树的表示与存储 | 4
|
||||
41 | 二叉树的遍历(前序/中序/后序) | 4
|
||||
42 | 完全二叉树定义、性质与数组表示 | 4
|
||||
43 | 哈夫曼树与哈夫曼编码 | 4
|
||||
44 | 二叉搜索树 | 4
|
||||
45 | 图的定义与相关概念 | 3
|
||||
46 | 图的存储(邻接矩阵/邻接表) | 4
|
||||
|
||||
=== 2.1.4 算法 ===
|
||||
47 | 算法概念 | 1
|
||||
48 | 算法描述(自然语言/流程图/伪代码) | 2
|
||||
49 | 枚举法 | 1
|
||||
50 | 模拟法 | 1
|
||||
51 | 贪心法 | 3
|
||||
52 | 递推法 | 3
|
||||
53 | 递归法 | 4
|
||||
54 | 二分法 | 4
|
||||
55 | 倍增法 | 4
|
||||
56 | 前缀和 | 3
|
||||
57 | 差分 | 4
|
||||
58 | 高精度运算 | 4
|
||||
59 | 排序基本概念 | 3
|
||||
60 | 冒泡排序 | 3
|
||||
61 | 选择排序 | 3
|
||||
62 | 插入排序 | 3
|
||||
63 | 计数排序 | 3
|
||||
64 | 深度优先搜索(DFS) | 5
|
||||
65 | 广度优先搜索(BFS) | 5
|
||||
66 | 图的深度优先遍历 | 4
|
||||
67 | 图的广度优先遍历 | 4
|
||||
68 | 泛洪算法(Flood Fill) | 5
|
||||
69 | 动态规划基本思路 | 4
|
||||
70 | 简单一维动态规划 | 4
|
||||
71 | 简单背包类型动态规划 | 5
|
||||
72 | 简单区间类型动态规划 | 5
|
||||
|
||||
=== 2.1.5 数学与其他 ===
|
||||
73 | 自然数/整数/有理数/实数及运算 | 1
|
||||
74 | 进制与进制转换 | 1
|
||||
75 | 代数(初中部分) | 1
|
||||
76 | 几何(初中部分) | 1
|
||||
77 | 整除/因数/倍数/质数/合数 | 3
|
||||
78 | 取整 | 3
|
||||
79 | 模运算与取余 | 3
|
||||
80 | 整数唯一分解定理 | 3
|
||||
81 | 辗转相除法(欧几里得算法) | 3
|
||||
82 | 素数筛法(埃氏筛/线性筛) | 4
|
||||
83 | 集合 | 2
|
||||
84 | 加法原理 | 2
|
||||
85 | 乘法原理 | 2
|
||||
86 | 排列 | 4
|
||||
87 | 组合 | 4
|
||||
88 | 杨辉三角 | 4
|
||||
89 | ASCII码 | 2
|
||||
|
||||
请以JSON格式返回,格式如下:
|
||||
[
|
||||
{"id": 1, "name": "知识点名称", "original_score": 1, "new_score": 2, "changed": true, "reason": "评分理由"},
|
||||
...
|
||||
]
|
||||
"""
|
||||
|
||||
response = client.chat.completions.create(
|
||||
model="gpt-4.1-mini",
|
||||
messages=[
|
||||
{"role": "system", "content": "你是NOI竞赛评分专家。请严格按照JSON格式返回评分结果。"},
|
||||
{"role": "user", "content": knowledge_points}
|
||||
],
|
||||
temperature=0.3,
|
||||
max_tokens=8000
|
||||
)
|
||||
|
||||
result = response.choices[0].message.content
|
||||
# Extract JSON from response
|
||||
if "```json" in result:
|
||||
result = result.split("```json")[1].split("```")[0]
|
||||
elif "```" in result:
|
||||
result = result.split("```")[1].split("```")[0]
|
||||
|
||||
scores = json.loads(result)
|
||||
|
||||
# Save to file
|
||||
with open('/home/ubuntu/ai_scores.json', 'w', encoding='utf-8') as f:
|
||||
json.dump(scores, f, ensure_ascii=False, indent=2)
|
||||
|
||||
# Print summary
|
||||
changed_count = sum(1 for s in scores if s.get('changed', False))
|
||||
print(f"总共评分 {len(scores)} 个知识点")
|
||||
print(f"其中 {changed_count} 个知识点评分发生了变化")
|
||||
print("\n评分变化的知识点:")
|
||||
for s in scores:
|
||||
if s.get('changed', False):
|
||||
print(f" [{s['id']}] {s['name']}: {s['original_score']} -> {s['new_score']} ({s['reason']})")
|
||||
1401
generate_detailed_doc.py
普通文件
1401
generate_detailed_doc.py
普通文件
文件差异内容过多而无法显示
加载差异
93
noi_syllabus_beginner_part1.txt
普通文件
93
noi_syllabus_beginner_part1.txt
普通文件
@@ -0,0 +1,93 @@
|
||||
NOI大纲(2025年修订版)完整内容提取
|
||||
|
||||
=== 2.1 入门级 ===
|
||||
|
||||
2.1.1 基础知识与编程环境
|
||||
1. 【1】计算机的基本构成(CPU、内存、I/O设备等)
|
||||
2. 【1】Windows、Linux等操作系统的基本概念及其常见操作
|
||||
3. 【1】计算机网络和Internet的基本概念
|
||||
4. 【1】计算机的历史和常见用途
|
||||
5. 【1】NOI以及相关活动的历史
|
||||
6. 【1】NOI以及相关活动的规则
|
||||
7. 【1】位、字节与字
|
||||
8. 【1】程序设计语言以及程序编译和运行的基本概念
|
||||
9. 【1】使用图形界面新建、复制、删除、移动文件或目录
|
||||
10. 【1】使用Windows系统下的集成开发环境(例如Dev-C++等)
|
||||
11. 【1】使用Linux系统下的集成开发环境(例如Code::Blocks等)
|
||||
12. 【1】常用编译命令g++的基本使用
|
||||
|
||||
2.1.2 C++程序设计
|
||||
1. 程序基本概念
|
||||
- 【1】标识符、关键字、常量、变量、字符串、表达式的概念
|
||||
- 【1】常量与变量的命名、定义及作用
|
||||
- 【2】头文件与名字空间的概念
|
||||
- 【2】编辑、编译、解释、调试的概念
|
||||
|
||||
2. 基本数据类型
|
||||
- 【1】整数型:int、long long
|
||||
- 【1】实数型:float、double
|
||||
- 【1】字符型:char
|
||||
- 【1】布尔型:bool
|
||||
|
||||
3. 程序基本语句
|
||||
- 【2】cin语句、scanf语句、cout语句、printf语句、赋值语句、复合语句
|
||||
- 【2】if语句、switch语句、多层条件语句
|
||||
- 【2】for语句、while语句、do while语句
|
||||
- 【3】多层循环语句
|
||||
|
||||
4. 基本运算
|
||||
- 【1】算术运算:加、减、乘、除、整除、求余
|
||||
- 【1】关系运算:大于、大于等于、小于、小于等于、等于、不等于
|
||||
- 【1】逻辑运算:与(&&)、或(||)、非(!)
|
||||
- 【1】变量自增与自减运算
|
||||
- 【1】三目运算
|
||||
- 【2】位运算:与(&)、或(|)、非(~)、异或(^)、左移(<<)、右移(>>)
|
||||
|
||||
5. 数学库常用函数
|
||||
- 【3】绝对值函数、四舍五入函数、下取整函数、上取整函数、平方根函数、常用三角函数、对数函数、指数函数
|
||||
|
||||
6. 结构化程序设计
|
||||
- 【1】顺序结构、分支结构和循环结构
|
||||
- 【2】自顶向下、逐步求精的模块化程序设计
|
||||
- 【2】流程图的概念及流程图描述
|
||||
|
||||
7. 数组
|
||||
- 【1】数组与数组下标
|
||||
- 【1】数组的读入与输出
|
||||
- 【3】二维数组与多维数组
|
||||
|
||||
8. 字符串的处理
|
||||
- 【2】字符数组与相关函数
|
||||
- 【2】string类与相关函数
|
||||
|
||||
9. 函数与递归
|
||||
- 【2】函数定义与调用、形参与实参
|
||||
- 【3】传值参数与传引用参数
|
||||
- 【2】常量与变量的作用范围
|
||||
- 【2】递归函数
|
||||
|
||||
10. 结构体与联合体
|
||||
- 【3】结构体
|
||||
- 【3】联合体
|
||||
|
||||
11. 指针与引用
|
||||
- 【4】指针
|
||||
- 【4】基于指针的数组访问
|
||||
- 【4】字符指针
|
||||
- 【4】指向结构体的指针
|
||||
- 【5】引用
|
||||
|
||||
12. 文件及基本读写
|
||||
- 【2】文件的基本概念、文本文件的基本操作
|
||||
- 【2】文本文件类型与二进制文件类型
|
||||
- 【2】文件重定向、文件读写等操作
|
||||
|
||||
13. STL模板
|
||||
- 【3】常用函数与算法模板:min、max、swap、sort
|
||||
- 【4】栈(stack)、队列(queue)、链表(list)、向量(vector)等容器
|
||||
|
||||
2.1.3 数据结构
|
||||
1. 线性结构
|
||||
- 【3】链表:单链表、双向链表、循环链表
|
||||
- 【3】栈
|
||||
- 【3】队列
|
||||
114
noi_syllabus_beginner_part2.txt
普通文件
114
noi_syllabus_beginner_part2.txt
普通文件
@@ -0,0 +1,114 @@
|
||||
继续提取 - 入门级后半部分
|
||||
|
||||
2.1.3 数据结构(续)
|
||||
2. 简单树
|
||||
- 【3】树的定义与相关概念
|
||||
- 【4】树的表示与存储
|
||||
- 【3】二叉树的定义与基本性质
|
||||
- 【4】二叉树的表示与存储
|
||||
- 【4】二叉树的遍历:前序、中序、后序
|
||||
|
||||
3. 特殊树
|
||||
- 【4】完全二叉树的定义与基本性质
|
||||
- 【4】完全二叉树的数组表示法
|
||||
- 【4】哈夫曼树的定义和构造、哈夫曼编码
|
||||
- 【4】二叉搜索树的定义和构造
|
||||
|
||||
4. 简单图
|
||||
- 【3】图的定义与相关概念
|
||||
- 【4】图的表示与存储:邻接矩阵
|
||||
- 【4】图的表示与存储:邻接表
|
||||
|
||||
2.1.4 算法
|
||||
1. 算法概念与描述
|
||||
- 【1】算法概念
|
||||
- 【2】算法描述:自然语言描述、流程图描述、伪代码描述
|
||||
|
||||
2. 入门算法
|
||||
- 【1】枚举法
|
||||
- 【1】模拟法
|
||||
|
||||
3. 基础算法
|
||||
- 【3】贪心法
|
||||
- 【3】递推法
|
||||
- 【4】递归法
|
||||
- 【4】二分法
|
||||
- 【4】倍增法
|
||||
|
||||
4. 算法策略
|
||||
- 【3】前缀和
|
||||
- 【4】差分
|
||||
|
||||
5. 数值处理算法
|
||||
- 【4】高精度的加法
|
||||
- 【4】高精度的减法
|
||||
- 【4】高精度的乘法
|
||||
- 【4】高精度整数除以单精度整数的商和余数
|
||||
|
||||
6. 排序算法
|
||||
- 【3】排序的基本概念
|
||||
- 【3】冒泡排序
|
||||
- 【3】选择排序
|
||||
- 【3】插入排序
|
||||
- 【3】计数排序
|
||||
|
||||
7. 搜索算法
|
||||
- 【5】深度优先搜索
|
||||
- 【5】广度优先搜索
|
||||
|
||||
8. 图论算法
|
||||
- 【4】深度优先遍历
|
||||
- 【4】广度优先遍历
|
||||
- 【5】泛洪算法(Flood Fill)
|
||||
|
||||
9. 动态规划
|
||||
- 【4】动态规划的基本思路
|
||||
- 【4】简单一维动态规划
|
||||
- 【5】简单背包类型动态规划
|
||||
- 【5】简单区间类型动态规划
|
||||
|
||||
2.1.5 数学与其他
|
||||
1. 数及其运算
|
||||
- 【1】自然数、整数、有理数、实数及其算术运算(加、减、乘、除)
|
||||
- 【1】进制与进制转换:二进制、八进制、十进制、十六进制
|
||||
|
||||
2. 初等数学
|
||||
- 【1】代数(初中部分)
|
||||
- 【1】几何(初中部分)
|
||||
|
||||
3. 初等数论
|
||||
- 【3】整除、因数、倍数、指数、质(素)数、合数
|
||||
- 【3】取整
|
||||
- 【3】模运算与取余
|
||||
- 【3】整数唯一分解定理
|
||||
- 【3】辗转相除法(欧几里得算法)
|
||||
- 【4】素数筛法:埃氏筛法与线性筛法
|
||||
|
||||
4. 离散与组合数学
|
||||
- 【2】集合
|
||||
- 【2】加法原理
|
||||
- 【2】乘法原理
|
||||
- 【4】排列
|
||||
- 【4】组合
|
||||
- 【4】杨辉三角
|
||||
|
||||
5. 其他
|
||||
- 【2】ASCII码
|
||||
|
||||
=== 2.2 提高级 ===
|
||||
|
||||
2.2.1 基础知识与编程环境
|
||||
1. 【5】Linux系统终端中常用的文件与目录操作命令
|
||||
2. 【5】Linux系统下常见文本编辑工具的使用
|
||||
3. 【5】常用编译命令g++与相关编译选项
|
||||
4. 【5】在Linux系统终端中运行程序,使用time命令查看程序用时
|
||||
5. 【5】调试工具GDB的使用
|
||||
|
||||
2.2.2 C++程序设计
|
||||
1. 类(class)
|
||||
- 【6】类的概念及简单应用
|
||||
- 【6】成员函数和运算符重载
|
||||
|
||||
2. STL模板
|
||||
- 【5】容器(container)和迭代器(iterator)
|
||||
- 【5】对(pair)、元组(tuple)
|
||||
30
research_findings.txt
普通文件
30
research_findings.txt
普通文件
@@ -0,0 +1,30 @@
|
||||
CSP-J历年真题考点分析(2010-2023)关键发现
|
||||
来源: https://blog.csdn.net/abilix_tony/article/details/145165078
|
||||
|
||||
T1(最简单):模拟、整数拆分、数位分离、字符串基础 → 近年需要时间复杂度优化和数学思维
|
||||
T2:以模拟为主,2019年起每题都需要时间复杂度优化。涉及贪心、排序、队列、二分
|
||||
T3:DP出现频率最高(线性DP/背包DP),其次是数据结构(栈/队列/树)、字符串大模拟、搜索(DFS/BFS)
|
||||
T4:DP/图论/树型数据结构出现频率最高。图论只在T4出现(BFS/DFS/最短路/拓扑排序)
|
||||
|
||||
高频考点排名(按出现频率):
|
||||
1. 模拟法 - 几乎每年必考(T1/T2高频)
|
||||
2. 动态规划(线性DP/背包DP) - T3/T4高频
|
||||
3. 数学/数论 - 近年趋势上升
|
||||
4. 排序算法 - 常考
|
||||
5. 贪心法 - T2/T4常考
|
||||
6. 搜索(DFS/BFS) - T3/T4常考
|
||||
7. 字符串处理 - T1/T2常考
|
||||
8. 数据结构(栈/队列/树) - T3/T4常考
|
||||
9. 枚举法 - T1/T2常考
|
||||
10. 图论(最短路/拓扑排序) - T4偶尔考
|
||||
|
||||
重要趋势:
|
||||
- 近年难度持续上升
|
||||
- 时间复杂度优化成为标配
|
||||
- 数学思维考察增多
|
||||
- DP是拉开差距的关键
|
||||
|
||||
NOI大纲难度系数说明:
|
||||
- 入门级知识点难度系数范围:1~5
|
||||
- 提高级知识点难度系数范围:5~8
|
||||
- NOI级知识点难度系数范围:7~10
|
||||
在新工单中引用
屏蔽一个用户