【题目链接】

ybt 1176:谁考了第k名
OpenJudge NOI 1.10 01:谁考了第k名

【题目考点】

1. 结构体 排序

【君义精讲】排序算法

2. printf %g输出

为简洁输出,如果输出的数字有小于等于6位有效数字,则直接输出,没有小数点末尾的0。如果有效数字多于6位,则以科学计数法形式输出。
直接cout输出浮点型量,即为以printf("%g")形式输出浮点型量

double a;
cin >> a;
cout << a << endl;
printf("%g", a);//两种输出的效果完全一样

【解题思路】

结构体对象排序时,比较的是对象的成员变量,交换的是对象整体。
该题为降序排序。

【题解代码】

解法1:冒泡排序

#include<bits/stdc++.h>
using namespace std;
struct Stu//学生类
{int num;//学号 double score;//分数
};
int main()
{int n, k;Stu stu[105];cin >> n >> k;for(int i = 1; i <= n; ++i)cin >> stu[i].num >> stu[i].score;for(int i = 1; i <= n-1; ++i)//冒泡排序 for(int j = 1; j <= n-i; ++j)if(stu[j].score < stu[j+1].score)swap(stu[j], stu[j+1]);cout << stu[k].num << ' ' << stu[k].score; return 0;
}

解法2:插入排序

#include<bits/stdc++.h>
using namespace std;
struct Stu//学生类
{int num;//学号 double score;//分数
};
int main()
{int n, k;Stu stu[105];cin >> n >> k;for(int i = 1; i <= n; ++i){cin >> stu[i].num >> stu[i].score;for(int j = i; j > 1; j--){if(stu[j].score > stu[j-1].score)swap(stu[j], stu[j-1]);elsebreak;}}cout << stu[k].num << ' ' << stu[k].score; return 0;
}

解法3:使用STL sort函数

  • 使用数组,重载小于号运算符
#include<bits/stdc++.h>
using namespace std;
struct Stu//学生类
{int num;//学号 double score;//分数 bool operator < (const Stu &b) const{return score > b.score;}
};
int main()
{int n, k;Stu stu[105];cin >> n >> k;for(int i = 1; i <= n; ++i)cin >> stu[i].num >> stu[i].score;sort(stu+1, stu+1+n);cout << stu[k].num << ' ' << stu[k].score; return 0;
}
  • 使用vector,写比较函数
#include<bits/stdc++.h>
using namespace std;
struct Stu//学生类
{int num;//学号 double score;//分数
};
bool cmp(Stu a, Stu b)
{return a.score > b.score;
}
int main()
{int n, k;vector<Stu> stu; Stu a;cin >> n >> k;for(int i = 1; i <= n; ++i){cin >> a.num >> a.score;stu.push_back(a);}sort(stu.begin(), stu.end(), cmp);cout << stu[k-1].num << ' ' << stu[k-1].score;//vector下标从0开始 return 0;
}

信息学奥赛一本通 1176:谁考了第k名 | OpenJudge NOI 1.10 01:谁考了第k名相关推荐

  1. 信息学奥赛一本通 1397:简单算术表达式求值 | OpenJudge NOI 1.12 01:简单算术表达式求值

    [题目链接] ybt 1397:简单算术表达式求值 OpenJudge NOI 1.12 01:简单算术表达式求值 [题目考点] 1. 函数 2. 选择结构 [解题思路] 这一章节都是练习函数,那么这 ...

  2. 信息学奥赛一本通 1016:整型数据类型存储空间大小 | OpenJudge NOI 1.2 01

    [题目链接] ybt 1016:整型数据类型存储空间大小 OpenJudge NOI 1.2 01:整型数据类型存储空间大小 [题目考点] 1. sizeof运算符 sizeof可以求某常量.变量或类 ...

  3. 信息学奥赛一本通 1245:不重复地输出数 | OpenJudge NOI 1.11 08:不重复地输出数

    [题目链接] ybt 1245:不重复地输出数 OpenJudge NOI 1.11 08:不重复地输出数 [题目考点] 1. 二分查找 2. 复杂度为O(nlogn)的排序 快速排序:时间复杂度O( ...

  4. 信息学奥赛一本通 1170:计算2的N次方 | OpenJudge NOI 1.6 12:计算2的N次方

    [题目链接] ybt 1170:计算2的N次方 OpenJudge NOI 1.6 12:计算2的N次方 [题目考点] 1. 高精度 考察:高精乘低精 高精度计算讲解 2. 快速幂 [解题思路] 先估 ...

  5. 信息学奥赛一本通 1411:区间内的真素数 | OpenJudge NOI 1.13 23:区间内的真素数

    [题目链接] ybt 1411:区间内的真素数 OpenJudge NOI 1.13 23:区间内的真素数 [题目考点] 1. 质数 2. 数字拆分 [解题思路] 设函数判断一个数是否是质数 设函数求 ...

  6. 信息学奥赛一本通 1405:质数的和与积 | OpenJudge NOI 2.1 7827:质数的和与积 | 小学奥数 7827

    [题目链接] ybt 1405:质数的和与积 OpenJudge NOI 2.1 7827:质数的和与积 OpenJudge NOI 小学奥数 7827:质数的和与积 [题目考点] 1. 枚举 [解题 ...

  7. 信息学奥赛一本通 1147:最高分数的学生姓名 | OpenJudge NOI 1.9 02:输出最高分数的学生姓名

    [题目链接] ybt 1147:最高分数的学生姓名 OpenJudge NOI 1.9 02:输出最高分数的学生姓名 [题目考点] 1. 结构体 2. 求最大值下标 [题解代码] 解法1:用结构体 设 ...

  8. 信息学奥赛一本通 1120:同行列对角线的格 | OpenJudge NOI 1.8 02:同行列对角线的格子

    [题目链接] ybt 1120:同行列对角线的格 OpenJudge NOI 1.8 02:同行列对角线的格子 [题目考点] 1. 二维数组 [解题思路] 解法1:移动焦点 设焦点起始位置,每移动一次 ...

  9. 信息学奥赛一本通 1112:最大值和最小值的差 | OpenJudge NOI 1.9 05

    [题目链接] ybt 1112:最大值和最小值的差 OpenJudge NOI 1.9 05:最大值和最小值的差 [题目考点] 1. 求数组中最大值及其下标 方法1:保存最大值和下标 设置临时最大值变 ...

最新文章

  1. 网络爬虫:基于对象持久化实现爬虫现场快速还原
  2. EasyUI 表格点击右键添加或刷新 绑定右键菜单
  3. 微信开发本地调试工具(模拟微信客户端)
  4. pythonsqlalchemy怎么看到返回的具体内容_sqlalchemy返回值总结
  5. android_x86安装时遇到的问题与修改开机分辨率
  6. 软件性能测试中常见问题,性能测试常见的问题
  7. matlab数值计算习题解析,第3章MATLAB数值计算-习题
  8. 在计算机中这样切换大小英语字母,怎么在Excel2016表格中快速转换字母大小写
  9. 一篇文章看懂NB-IoT
  10. 华为公司内部控制手册(干货)
  11. 用tushare数据自定义期货大宗商品指数(3)
  12. 网上说的白帽子黑帽子都是什么?
  13. 探索 Sa-Token (三) 权限认证原理
  14. awd的批量脚本 pwn_CTF线下赛AWD套路小结
  15. TheDAO被攻击事件考察报告
  16. 苹果cms模板_泛目录站群神器,万词无限模板站群黑帽SEO程序
  17. [kubernetes]-安装dashboard2.0并解决谷歌浏览器无法访问dashboard的问题
  18. 上网本能装Linux,无光驱安装:上网本安装Linux教程(1)
  19. 苏玲老师Git课程学习笔记
  20. matlab做pca程序,PCA 程序代码  matlab版

热门文章

  1. vs2008试用期到期解决办法
  2. hdu 1251 统计难题 (Trie树)
  3. jQuery图表开源软件
  4. armadillo 库加入项目中程序卡死不运行的问题
  5. C#、.Net经典面试题集锦(一)
  6. 大数据不背“杀熟”的锅!高科技公司掌握了你的个人信息,都干了些啥?
  7. spring5企业级开发实战 pdf_终于总结出Spring全家桶+微服务设计模式+Netty+MySQL调优PDF...
  8. mysql 同一天多条记录只取第一条_MySQL面试高频100问(二)
  9. python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承
  10. 最近和前字节跳动大佬聊了聊今年春招面试的变化