码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 编程团体赛


    目录

    1047:编程团体赛

    输入格式:

    输出格式:

    输入样例:

    输出样例:

    思路:

    代码:

    时间复杂度:

    总结:

    题目链接:


    1047:编程团体赛

    编程团体赛的规则为:每个参赛队由若干队员组成;所有队员独立比赛;参赛队的成绩为所有队员的成绩和;成绩最高的队获胜。

    现给定所有队员的比赛成绩,请你编写程序找出冠军队。

    输入格式:

    输入第一行给出一个正整数 N(≤104),即所有参赛队员总数。随后 N 行,每行给出一位队员的成绩,格式为:队伍编号-队员编号 成绩,其中队伍编号为 1 到 1000 的正整数,队员编号为 1 到 10 的正整数,成绩为 0 到 100 的整数。

    输出格式:

    在一行中输出冠军队的编号和总成绩,其间以一个空格分隔。注意:题目保证冠军队是唯一的。

    输入样例:

    1. 6
    2. 3-10 99
    3. 11-5 87
    4. 102-1 0
    5. 102-3 100
    6. 11-9 89
    7. 3-2 61

    输出样例:

    11 176
    

    代码长度限制

    16 KB

    时间限制

    400 ms

    内存限制

    64 MB

    思路:

        我们看到这个题目,是输出总分最高的队伍,那肯定需要排序,排序之后为了保证队伍名称不错乱
        我们可以定义一个结构来解决.
          一个结构,需要:
            name:是这个队伍的编号
            x:这个队伍里面队员的编号
            s:这个队伍目前的总成绩
          这个结构我们可以定义一个数组a,大小就是1001,毕竟题目中说明了队伍编号最多是1000.
        输入之后,就可以开始结构体排序了.
        如果用STL库默认的sort函数来排序,是不行的,因为我们这个结构在库里面没有定义.
        那我们怎么办呢?
        我们可以自己来定义一下这个sort排序的排序规则.
        写一个cmp函数,参数是两个队伍结构,因为我们是找冠军,就可以定义他们的s(成绩)来比谁大.
        排序过后,因为是从大到小排序,下标为0的地方就是成绩最大的队伍.
        然后将其输出. 

    代码:

    1. //1047编程团体赛:
    2. //正解:
    3. #include
    4. using namespace std;
    5. struct dw{ //定义一个结构
    6. int name; //队伍编号
    7. int x; //学员成绩
    8. int s; //队伍总成绩
    9. dw(){ //结构函数初始化
    10. x=0; //都初始化为0
    11. s=0;
    12. }
    13. }a[1001];//定义队伍数组
    14. bool cmp(dw a,dw b){ //自定义排序方式
    15. return a.s>b.s; //由两个队伍的总成绩大小来比
    16. }
    17. int main(){
    18. int n,i=0;
    19. cin>>n;
    20. int b[n];
    21. while(n--){ //输入
    22. int y;
    23. char c;
    24. cin>>b[i]; //队伍的编号
    25. a[b[i]].name=b[i]; //赋值
    26. cin>>c; //输入里面有一个'-'
    27. cin>>a[b[i]].x>>y;//输入队员的编号和成绩
    28. a[b[i]].s+=y;//加到总成绩里面
    29. i++;
    30. }
    31. sort(a,a+1001,cmp);//排序
    32. cout<0].name<<" "<0].s<//输出冠军
    33. return 0;
    34. }

    时间复杂度:

    STL库sort函数是冒泡排序,原本复杂度是O(N^2); 
    在这里,a的长度最大是10^3=1001
    那么真正时间复杂度就是O(10^3^2)=O(10^6); 
    虽然这个复杂度以及可以AC本题了,但是我们还可以优化:
        可以应用STL库中的qsort函数 
        该函数内部写的是快速排序的代码
        一般来说,快速排序是O(N)的复杂度
        最快就可以优化到O(10^3);
        快了不少,不过前面这个冒泡排序就已经不超时了,这个优化算是多此一举. 

    总结:

      这道题考的是对结构的应用以及结构体的排序.

    题目链接:

    PTA | 程序设计类实验辅助教学平台千名教师建设,万道高质量题目,百万用户拼题的程序设计实验辅助教学平台https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805277163896832

  • 相关阅读:
    3_docker部署mysql主主备份
    实践笔试题1
    聚焦于先进电池技术等领域的前沿研究和应用,龙讯旷腾出席中国化学会第二届能源化学青年论坛
    kubernetes资源对象介绍及常用命令(五)-(ConfigMap&Secret)
    vue3父子通信+ref,toRef,toRefs使用实例
    ChatGPT(1):ChatGPT初识
    Electron之集成vue+vite开发桌面程序
    java把html标签字符转普通字符(反转换成html标签)
    layui 简单实现 TABLE 分页功能
    HTTP和HTTPS协议(必备知识)
  • 原文地址:https://blog.csdn.net/wo_ai_luo_/article/details/128193501
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号