育华周赛 第十四期
已结束
乐多
开始于: 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