1 条题解

  • 0
    @ 2025-8-24 21:14:46

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 未来姚班zyl
    欢迎加入粉丝团!https://www.luogu.com.cn/team/72518|AFO

    搬运于2025-08-24 21:14:45,当前版本为作者最后更新于2023-04-21 17:17:12,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    Source & Knowledge

    2023202344 月语言月赛,由洛谷网校入门计划/基础计划提供。

    题目大意

    这是题目内容

    就是已知两个队伍的通过题目数与罚时,要按照通过题目数优先,通过题目数相同时,罚时短者胜的原则对他们排名,输出靠前的队伍。

    题目分析

    本题考查分支结构。

    就着这道题来讲一讲做一道题的过程。

    第一步,阅读题目内容,了解大意。

    第二步,确定需要定义的变量及其类型。在本题中,需要定义的变量有四个,分别是 A1A_{1}P1P_{1}A2A_{2}P2P_{2}。它们都是正整数,且范围很小,所以定义它们的类型为 intint

    第三步,按照大意,认真思考,得出解决方案,并写程序实现。

    以这题为例,可以直接按照题意,用判断语句,如果 A1>A2A_{1}>A_{2},则第一队排名靠前,否则,如果 A1<A2A_{1}<A_{2},则第二队排名靠前,否则,通过题目量一定相同,如果 P1<P2P_{1}<P_{2},则第一队排名靠前,否则,第二队排名靠前。(因为题目保证了没有排名相同的情况)核心代码如下:

    if(a1>a2)
    	cout <<"\"\\n\"";//要按题目提示的格式输出,因为""和\单独使用时是特殊字符
    else if(a1<a2)
    	cout <<"\"\\t\"";
    else if(p1<p2)
    	cout <<"\"\\n\"";
    else 
    	cout <<"\"\\t\"";
    

    这样写比较繁琐,因为写了四个判断语句,想一想能不能简化?

    在本题中,排名靠前的,要么是第一队,要么是第二队。那么,我们可以先判断第一队是否靠前,如果靠前,则直接输出,否则,一定是第二队靠前。第一队获胜有两种情况:通过题目数更多或者通过题目数相同且罚时更少。

    这样只用一条判断语句(和一句 elseelse)就能解决问题了。注意,在符号运算优先级不确定时,一定要加括号。

    核心代码如下:

    if(a1 > a2 || (a1 == a2 && p1 < p2))
    	cout <<"\"\\n\"";
    else cout <<"\"\\t\"";
    }                    
    

    视频讲解

    • 1

    信息

    ID
    8598
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者