码农知识堂 - 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

  • 相关阅读:
    【微电网优化】基于matlab遗传算法求解微电网经济优化问题【含Matlab源码 2062期】
    .NET Framework 4.5.2组件安装 官网免费版
    面试官:Kafka是什么,它有什么特性与使用场景?
    【完全二叉树魔法:顺序结构实现堆的奇象】
    trivy【3】自定义扫描策略
    leetcode 44. 通配符匹配(困难,dp)
    小谈设计模式(4)—单一职责原则
    多策略融合改进的均衡优化算法
    缓解缓存击穿的大杀器之---singleflight深入浅出
    Linux离线安装Mysql-5.7
  • 原文地址:https://blog.csdn.net/wo_ai_luo_/article/details/128193501
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号