专栏文章
10.6TJ
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minof9zy
- 此快照首次捕获于
- 2025/12/02 05:43 3 个月前
- 此快照最后确认于
- 2025/12/02 05:43 3 个月前
10.6TJ
T1 选手选拔
概述个人有三个成绩,以不同的规则选出几个人错因sort(a+1;a+n+1;cmp)%%%
AC CODE:
CPP#include <bits/stdc++.h>
using namespace std;
int n, a, b, c;
struct node {
int x, y, z, num;
} p[200005];
int ans[200005];
bool cmp1(node p1, node p2) {
if (p1.x != p2.x)
return p1.x > p2.x;
else
return p1.num < p2.num;
}
bool cmp2(node p1, node p2) {
if (p1.y != p2.y)
return p1.y > p2.y;
else
return p1.num < p2.num;
}
bool cmp3(node p1, node p2) {
if (p1.z != p2.z)
return p1.z > p2.z;
else
return p1.num < p2.num;
}
bool cmp(int p1, int p2) {
return p1 < p2;
}
int main() {
// freopen("election.in", "r", stdin);
// freopen("election.out", "w", stdout);
cin >> n >> a >> b >> c;
for (int i = 1; i <= n; i++) {
int v;
cin >> p[i].x >> p[i].y >> v;
p[i].z = p[i].x + p[i].y + v;
p[i].num = i;
}
sort(p + 1, p + 1 + n, cmp1);
int cnt = 0;
for (int i = 1; i <= b; i++) {
ans[++cnt] = p[i].num;
}
sort(p + 1, p + 1 + n, cmp2);
for (int i = 1; i <= c; i++) {
ans[++cnt] = p[i].num;
}
sort(p + 1, p + 1 + n, cmp3);
for (int i = 1; i <= a; i++)
ans[++cnt] = p[i].num;
sort(ans + 1, ans + 1 + cnt, cmp);
for (int i = 1; i <= cnt; i++)
if (ans[i] != ans[i - 1])
cout << ans[i] << ' ';
return 0;
}
T2 比赛安排
概述给定个时间段求交集时间最长的两个时间段的交集时间错因神秘玄学代码
没有考虑完情况
AC CODE:
CPP#include <bits/stdc++.h>
using namespace std;
int n;
struct node {
int a, b;
} p[100005];
bool cmp(node p1, node p2) {
return p1.a < p2.a;
}
int cnt = 0;
int main() {
// freopen("match.in", "r", stdin);
// freopen("match.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> p[i].a >> p[i].b;
}
sort(p + 1, p + 1 + n, cmp);
for (int i = 1; i < n; i++) {
for (int j = i + 1; j <= n; j++) {
if (p[j].a < p[i].b) {
if (p[j].b <= p[i].b) {
cnt = max(cnt, p[j].b - p[j].a);
} else {
cnt = max(cnt, p[i].b - p[j].a);
}
} else
break;
}
}
cout << cnt;
return 0;
}
T3 阿斯特拉
概述给定两个数列寻找错因只考虑了最大值的比较没有考虑余下的数据
AC CODE:
CPP#include <bits/stdc++.h>
using namespace std;
int t, n, d, a[200005], b[200005];
bool cmp(int p1, int p2) {
return p1 < p2;
}
void solve() {
cin >> n >> d;
int cnt = 0;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++)
cin >> b[i];
sort(b + 1, b + 1 + n, cmp);
for (int i = 1; i <= n; i++) {
int key = a[i] + d;
int id = lower_bound(b + 1, b + 1 + n, key) - b;
id--;
if (abs(a[i] - b[id]) <= d && id >= 1) {
cnt = max(a[i] + b[id], cnt);
}
}
if (cnt == 0)
cout << "no" << endl;
else
cout << cnt << endl;
}
int main() {
// freopen("astrala.in", "r", stdin);
// freopen("astrala.out", "w", stdout);
cin >> t;
for (int i = 1; i <= t; i++) {
solve();
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...