1 条题解
-
0
自动搬运
来自洛谷,原作者为

chen_zhe
Aya 敲可爱的~搬运于
2025-08-24 21:07:48,当前版本为作者最后更新于2025-05-28 14:27:38,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
欢迎报名洛谷网校,期待和大家一起进步!
本题考察结构体,排序。
我们使用结构体存储每位病人的信息:字符串
id表示病人的 ID,整数ag表示病人的年龄,整数rk表示登记顺序(越小越早):struct P { string id; int ag; int rk; };本题的关键在于排序规则。对于第 个人和第 个人来说:
- 如果 不是老年人,而 是老年人,则需要交换;
- 如果 都是老年人,则当下列:
- 的年龄小于 ;
- 和 年龄相等,但是 来的比 晚
两个条件满足其一,则需要交换;
使用冒泡排序的参考代码:
for (int i = 1; i <= n-1; ++i) { for (int j = 1; j <= n-i; ++j) { bool sw = false; bool sen1 = (a[j].ag >= 60); bool sen2 = (a[j+1].ag >= 60); if (sen2 && !sen1) sw = true; else if (sen1 && sen2) { if (a[j].ag < a[j+1].ag) sw = true; else if (a[j].ag == a[j+1].ag && a[j].rk > a[j+1].rk) sw = true; } if (sw) swap(a[j], a[j+1]); } }如果使用
sort进行结构体排序,则参考的自定义比较函数如下:bool cmp(P x, P y) { bool sx = (x.ag >= 60); bool sy = (y.ag >= 60); if (sx != sy) return sx; if (sx && sy) { if (x.ag != y.ag) return x.ag > y.ag; return x.rk < y.rk; } return x.rk < y.rk; }
- 1
信息
- ID
- 11817
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者