码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PTA 甲级 1012 The Best Rank


    我的思路是:结构体排序+二分查找

    值得注意的是:1.名次的算法 如 99、 99 、98 对应的排名是1 、1、3; 2.选取的是个人的最佳排名;3.排序函数,参考别人的写法还可以这样写,减少代码量

    1. struct Stu{
    2. int id;
    3. int score[4];//a,c,m,e
    4. int rk[4];
    5. };
    6. //全局变量pos,迭代pos控制对那门课进行排序
    7. bool cmp1(Stu&a, Stu& b) {
    8. return a.score[pos] > b.score[pos];
    9. }

    1. #include
    2. #include
    3. #include
    4. #include
    5. #define MAXN 2010
    6. using namespace std;
    7. struct Stu{
    8. int id;
    9. int c,m,e,a;
    10. int c_rank,m_rank,e_rank,a_rank;
    11. };
    12. struct Stu stu[MAXN];
    13. bool cmp(Stu&a,Stu&b){
    14. return a.id
    15. }
    16. bool cmp0(Stu&a,Stu&b){
    17. return a.a>b.a;
    18. }
    19. bool cmp1(Stu&a,Stu&b){
    20. return a.c>b.c;
    21. }
    22. bool cmp2(Stu&a,Stu&b){
    23. return a.m>b.m;
    24. }
    25. bool cmp3(Stu&a,Stu&b){
    26. return a.e>b.e;
    27. }
    28. void work(Stu&s){
    29. string dis="ACME";
    30. int pos=0,rk=s.a_rank;
    31. if(s.c_rank
    32. rk=s.c_rank;
    33. pos=1;
    34. }
    35. if(s.m_rank
    36. rk=s.m_rank;
    37. pos=2;
    38. }
    39. if(s.e_rank
    40. rk=s.e_rank;
    41. pos=3;
    42. }
    43. cout<" "<
    44. }
    45. int main(){
    46. int n,m;
    47. cin>>n>>m;
    48. for(int i=0;i
    49. cin>>stu[i].id>>stu[i].c>>stu[i].m>>stu[i].e;
    50. stu[i].a=round(1.0*(stu[i].c+stu[i].m+stu[i].e)/3);
    51. }
    52. //排序
    53. sort(stu,stu+n,cmp0);
    54. for(int i=0,rk=1;i
    55. if(i==0){
    56. stu[i].a_rank=1;
    57. }
    58. else{
    59. if(stu[i].a-1].a)rk=i+1;
    60. stu[i].a_rank=rk;
    61. }
    62. }
    63. sort(stu,stu+n,cmp1);
    64. for(int i=0,rk=1;i
    65. if(i==0){
    66. stu[i].c_rank=1;
    67. }
    68. else{
    69. if(stu[i].c-1].c)rk=i+1;
    70. stu[i].c_rank=rk;
    71. }
    72. }
    73. sort(stu,stu+n,cmp2);
    74. for(int i=0,rk=1;i
    75. if(i==0){
    76. stu[i].m_rank=1;
    77. }
    78. else{
    79. if(stu[i].m-1].m)rk=i+1;
    80. stu[i].m_rank=rk;
    81. }
    82. }
    83. sort(stu,stu+n,cmp3);
    84. for(int i=0,rk=1;i
    85. if(i==0){
    86. stu[i].e_rank=1;
    87. }
    88. else{
    89. if(stu[i].e-1].e)rk=i+1;
    90. stu[i].e_rank=rk;
    91. }
    92. }
    93. //对id排序以便查找
    94. sort(stu,stu+n,cmp);
    95. // cout<
    96. for(int i=0;i
    97. int id;
    98. cin>>id;
    99. //二分查找
    100. int left=0,right=n-1;
    101. while(left
    102. int mid=(left+right)/2;
    103. if(stu[mid].id1;
    104. else right=mid;
    105. }
    106. // printf("left=%d,stu[left].id=%d,id=%d\n",left,stu[left].id,id);
    107. if(stu[left].id!=id) cout<<"N/A"<
    108. else work(stu[left]);
    109. }
    110. return 0;
    111. }

  • 相关阅读:
    信息论基础(Part2)
    快解析结合千方百剂
    物无定味适口者珍,Python3并发场景(CPU密集/IO密集)任务的并发方式的场景抉择(多线程threading/多进程multiprocessing/协程asyncio)
    学生HTML个人网页作业作品:基于HTML实现教育培训机构网站模板毕业源码(8页)
    Java实现拼图小游戏(2)——菜单搭建(有关Java中的JMenuBar知识点)
    第一章 JavaScript --下
    springcloud_2021.0.3学习笔记:如何通过nacos配置中心读取配置参数
    My Seventy-ninth Page - 完全平方数 - By Nicolas
    redis 持久化
    机器学习——Machine Learning
  • 原文地址:https://blog.csdn.net/weixin_52030057/article/details/132872432
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号