小学生信息学奥赛学习站

这里不是普通导航站,而是一个给孩子学习 C++、算法和 CSP-J 的小小基地。 每天学一点,练一点,记录一点,慢慢成为小小算法高手。

开始学习路线 使用学习工具
✅ 今日建议:学习一个知识点,完成 2~3 道题,最后把错题和收获记录下来。

🚀 信奥赛学习路线

适合六年级孩子,从 C++ 基础开始,逐步进入 CSP-J。

第一阶段:C++ 编程基础

  • 输出 cout、输入 cin
  • 变量、数据类型、运算符
  • if 判断、for 循环、while 循环
  • 数组、字符串、函数

第二阶段:基础算法入门

  • 枚举、模拟、排序
  • 前缀和、差分入门
  • 二分查找、递归
  • 简单贪心

第三阶段:CSP-J 常见专题

  • 高精度计算
  • 搜索 DFS / BFS
  • 动态规划入门
  • 图论基础、树的基础

第四阶段:比赛训练

  • 做历年 CSP-J 真题
  • 整理错题本
  • 限时模拟训练
  • 复盘:为什么错?下次怎么避免?

🌐 常用学习网站

这些网站比 AI 视频工具更适合信奥赛学习。

刷题平台

洛谷

国内常用的 OI 刷题平台,适合做入门题、普及题和 CSP-J 训练。

打开洛谷 →

入门推荐

信息学奥赛一本通

适合系统学习 C++ 基础和算法基础,题目比较适合初学者。

打开一本通 →

课程学习

AcWing

有很多算法课程和题库,适合后期系统提高。

打开 AcWing →

比赛信息

NOI 官网

了解信息学奥赛、CSP-J/S、NOIP 等官方信息。

打开 NOI 官网 →

在线工具

菜鸟 C++ 教程

可以查询 C++ 基础语法,适合忘记知识点时快速复习。

打开教程 →

后期提高

Codeforces

国际算法竞赛平台,前期不用着急,后期提高时再使用。

打开 Codeforces →

🧰 学习小工具

🎲 随机推荐一道题

不知道今天做什么题?点一下随机推荐。

点击按钮后,这里会出现今日推荐题目。

🔢 进制转换器

信奥常用:十进制、二进制、八进制、十六进制转换。

转换结果会显示在这里。

🔤 ASCII 查询

输入一个字符,查询它的 ASCII 编码。

查询结果会显示在这里。

⏱️ 时间复杂度速查表

复杂度 含义 常见例子
O(1) 常数时间 访问数组中的某个元素
O(log n) 对数时间 二分查找
O(n) 线性时间 遍历一个数组
O(n log n) 较快的排序复杂度 sort 排序
O(n²) 平方时间 双重循环、冒泡排序
O(2ⁿ) 指数时间 枚举所有子集

📚 C++ 常用代码模板

基础输入输出模板

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}

数组输入与求和

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;

    int a[1005];
    int sum = 0;

    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        sum += a[i];
    }

    cout << sum << endl;
    return 0;
}

排序模板

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;

    vector<int> a(n);

    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    sort(a.begin(), a.end());

    for (int x : a) {
        cout << x << " ";
    }

    return 0;
}

二分查找模板

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, target;
    cin >> n >> target;

    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    int l = 0, r = n - 1;
    bool found = false;

    while (l <= r) {
        int mid = (l + r) / 2;

        if (a[mid] == target) {
            found = true;
            break;
        } else if (a[mid] < target) {
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }

    if (found) cout << "找到了";
    else cout << "没找到";

    return 0;
}

📝 我的错题本

错题本会保存在当前浏览器中,刷新网页不会丢失。

✅ 学习打卡

每天记录一点,能看到自己的进步。

🌱 这个网站是怎么做出来的?

HTML

网页的内容

HTML 负责告诉浏览器:页面上有什么,比如标题、段落、按钮、表格。

CSS

网页的样子

CSS 负责让网页变漂亮,比如颜色、字体、布局、圆角、阴影。

JavaScript

网页的动作

JavaScript 负责网页交互,比如点击按钮、保存错题、进制转换。

一个最简单的网页长这样:

<h1>你好,信奥!</h1>
<p>这是我的第一个网页。</p>
<button>点我一下</button>