育华周赛 第十四期

已结束 乐多 开始于: 2025-4-11 18:00 54 小时 主持人: 16

如果三次发现在比赛提交中使用ai代码,将注销账号,踢出c++校队.不要试图存有侥幸心理,是否是ai代码的最终解释权归孙老师所有.

T1

因为数字具有唯一性,所以用一个桶即可,将a拆分放进桶里,然后用b的数字一个一个去比对

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

int T[256];

int main(int argc, char* argv[]) {
    string a, b;
    cin >> a >> b;
    for (int i = 1; i <= a.size(); i++) {
        T[a[i-1]] = i;
    }
    int ans1 = 0; // 数字相同。位置相同
    int ans2 = 0; // 数字相同。位置不同
    for (int i = 1; i <= b.size(); i++) {
        if (T[b[i-1]]) {
            if (T[b[i-1]] == i) {
                ans1++;
            }
            else {
                ans2++;
            }
        }
    }
    cout << ans1 << endl << ans2;

    return 0;
}

T2

典型的模拟题,按照题目要求模拟即可。

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


int main(int argc, char* argv[]) {
    string str;
    cin >> str;
    str.push_back('+');  //在末尾添加一个+号,方便处理最后一个字符
    long long ans = 0;
    int value = 0;
    char lop = '+';
    for (int i = 0; i < str.size(); i++) {
        if (str[i] == '+' || str[i] == '-') {
            ans += lop == '+' ? value : -value;
            lop = str[i];
            value = 0;
        }else {
            value = value * 10 + (str[i] - '0');
        }
    }
    cout << ans << endl;
    return 0;
}

T3

根据题意,我们要选择能力值最接近的人,那么必须对能力值进行排序,然后按照顺序遍历, 一旦能力值差距大于给定值,那么与当前值差距大于给定值的人全部踢出,再加入当前能力值, 计算热情值,然后取最大值。

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

struct Node {
    long long a;    // 能力值
    long long b;    // 热情度
};

// 按能力值对选手进行排序的比较函数
bool cmp(const Node& a, const Node& b) {
    return a.a < b.a;
}


Node a[100010];

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

    for (long long i = 1; i <= n; ++i) {
        cin >> a[i].a >> a[i].b;
    }

    long long X;
    cin >> X;

    // 按能力值对选手进行排序
    sort(a+1,a+1+n,cmp);

    long long ans = 0;
    long long left = 0;
    long long sum = 0;

    // 双指针遍历选手区间
    for (long long i = 1; i <= n; ++i) {
        sum += a[i].b;
        // 若区间内能力差值超过 X,缩小左边界
        while (a[i].a - a[left].a > X) {
            sum -= a[left].b;
            left++;
        }
        // 更新最大总热情度
        ans = max(ans, sum);
    }

    cout << ans << endl;

    return 0;
}

状态
已结束
规则
乐多
题目
6
开始于
2025-4-11 18:00
结束于
2025-4-14 0:00
持续时间
54 小时
主持人
参赛人数
16