修改密码

全面备考2025 CSP-J 初赛 & 复赛直播课

更新中

陈远龙老师主讲 & 答疑

课程题单 - T1005

未购买 · 可先试学32节课

课程目录展开/折叠

第25课 CSP-J大纲知识专题&初赛真题精讲

视频时长:01:11:35
播放快捷键

播放/暂停:空格(或鼠标单击)      全屏:F(或鼠标双击)      退出全屏:Esc

快进10 / 30 / 60秒:方向键→ / Ctrl + 方向键→ / Shift + 方向键→

快退10 / 30 / 60秒:方向键← / Ctrl + 方向键← / Shift + 方向键←

本节课讲解配套PPT&板书:

本节课讲解到的源代码

源代码下载:第25课 CSP-J大纲知识专题&初赛真题精讲-源代码下载

1. 引用-1
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a = 100;
    int b = 200;

    int& c = a;

    c = 300;
    cout << a << endl;
    a = 400;
    cout << c << endl;

    return 0;
} 
2. 引用-2
#include <bits/stdc++.h>
using namespace std;

void swap(int& a, int& b)
{
    int t = a;
    a = b;
    b = t;
}

int main()
{
    int a = 100;
    int b = 200;
    swap(a, b);
    cout << a << ' ' << b << endl;

    return 0;
} 
3. C1006 - 前缀和-1
#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 10;
int a[N];
int m, n;

int main()
{
    cin >> m >> n;
    for (int i = 1; i <= m; i ++)
    {
        cin >> a[i];
    }
    while (n--)
    {
        int l, r;
        cin >> l >> r;
        int res = 0;
        for (int i = l; i <= r; i ++)
            res += a[i];
        cout << res << endl;
    }
    return 0;
}
4. C1006 - 前缀和-2
#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 10;
int a[N];
int s[N];
int m, n;

int main()
{
    const char endl = '\n';
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> m >> n;
    for (int i = 1; i <= m; i ++)
    {
        cin >> a[i];
        s[i] = s[i - 1] + a[i];
    }
    while (n--)
    {
        int l, r;
        cin >> l >> r;
        cout << s[r] - s[l - 1] << endl;
    }
    return 0;
}
5. P1231 - 差分-1
#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 10;
int n, q;
int a[N];

int main()
{
    cin >> n >> q;
    for (int i = 1; i <= n; i ++)
    {
        cin >> a[i];
    }
    // O(qn)
    while (q--)
    {
        int l, r, c;
        cin >> l >> r >> c;
        for (int i = l; i <= r; i ++)
            a[i] += c;
    }
    for (int i = 1; i <= n; i ++)
    {
        cout << a[i] << ' ';
    }

    return 0;
} 
6. P1231 - 差分-2
#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 10;
int n, q;
int a[N], d[N];

int main()
{ 
    const char endl = '\n';
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> q;
    for (int i = 1; i <= n; i ++)
    {
        cin >> a[i];
        d[i] = a[i] - a[i - 1];
    }
    // O(q)
    while (q--)
    {
        int l, r, c;
        cin >> l >> r >> c;
        d[l] += c;
        d[r + 1] -= c;
    }
    for (int i = 1; i <= n; i ++)
    {
        a[i] = a[i - 1] + d[i];
        cout << a[i] << ' ';
    }

    return 0;
} 
本节课无课后练习

本节课答疑

建议大家有问题先通过AI答疑(比如:DeepSeek 等),AI时代需要学会使用AI辅助学习

陈远龙老师视频讲解:如何使用DeepSeek进行答疑?

通过AI未能获得满意解答的,可以联系陈远龙老师答疑

目录