2024年 团体程序设计天梯赛个人总结

本文围绕天梯赛展开,详细解析了L1一阶题和L2二阶题的多道题目,包括题目描述、输入输出格式及解题思路。作者还分享了参赛经历和感悟,去年打铁,今年依旧失利,接触ACM后有新目标,如今面临算法与开发的选择,决定做出改变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

前言:
这是一个悲伤的故事~

⭐L1一阶题

⭐L1-097 编程解决一切(5分)

题目描述:

编程解决一切 —— 本题非常简单,就请你直接在屏幕上输出这句话:“Problem? The Solution: Programming.”。

输入格式:

本题没有输入。

输出格式:

在一行中输出 Problem? The Solution: Programming.。

输入样例:

输出样例:

Problem? The Solution: Programming.

解题思路:

没啥好说的,天梯赛经典第一题白送你先让你尝点甜头。

⭐Code::

#include<bits/stdc++.h>
using namespace std;

int main(){
   
   
    cout << "Problem? The Solution: Programming.";
}

⭐L1-098 再进去几个人(5分)

题目描述:

在这里插入图片描述
数学家、生物学家和物理学家坐在街头咖啡屋里,看着人们从街对面的一间房子走进走出。他们先看到两个人进去。时光流逝。他们又看到三个人出来。
物理学家:“测量不够准确。”
生物学家:“他们进行了繁殖。”
数学家:“如果现在再进去一个人,那房子就空了。”
下面就请你写个程序,根据进去和出来的人数,帮数学家算出来,再进去几个人,那房子就空了。

输入格式:

输入在一行中给出 2 个不超过 100 的正整数 A 和 B,其中 A 是进去的人数,B 是出来的人数。题目保证 B 比 A 要大。

输出格式:

在一行中输出使得房子变空的、需要再进去的人数。

输入样例:

4 7

输出样例:

3

解题思路:

也是一道白送你的减法题。

⭐Code::

#include<bits/stdc++.h>
using namespace std;

int main(){
   
   
    int a,b;
    cin >> a >> b;
    cout << b - a << "\n";
}

⭐L1-099 帮助色盲(10分)

题目描述:

在这里插入图片描述

在古老的红绿灯面前,红绿色盲患者无法分辨当前亮起的灯是红色还是绿色,有些聪明人通过路口的策略是这样的:当红灯或绿灯亮起时,灯的颜色无法判断,但前方两米内有同向行走的人,就跟着前面那人行动,人家走就跟着走,人家停就跟着停;如果当前是黄灯,那么很快就要变成红灯了,于是应该停下来。麻烦的是,当灯的颜色无法判断时,前方两米内没有人……
本题就请你写一个程序,通过产生不同的提示音来帮助红绿色盲患者判断当前交通灯的颜色;但当患者可以自行判断的时候(例如黄灯或者前方两米内有人),就不做多余的打扰。具体要求的功能为:当前交通灯为红灯或绿灯时,检测其前方两米内是否有同向行走的人 —— 如果有,则患者自己可以判断,程序就不做提示;如果没有,则根据灯的颜色给出不同的提示音。黄灯也不需要给出提示。

输入格式:

输入在一行中给出两个数字 A 和 B,其间以空格分隔。其中 A 是当前交通灯的颜色,取值为 0 表示红灯、1 表示绿灯、2 表示黄灯;B 是前方行人的状态,取值为 0 表示前方两米内没有同向行走的人、1 表示有。

输出格式:

根据输入的状态在第一行中输出提示音:dudu 表示前方为绿灯,可以继续前进;biii 表示前方为红灯,应该止步;- 表示不做提示。在第二行输出患者应该执行的动作:move 表示继续前进、stop 表示止步。

输入样例:

0 0

输出样例:

biii
stop

解题思路:

一道吃史题,本来是一道很简单的题目,老是喜欢把题面搞成这种鬼样子,喵的当时赛时的时候写这题的时候一直只有8分,在这题上面浪费了不少时间,导致比赛失利。

⭐Code::

#include<bits/stdc++.h>
using namespace std;

int main(){
   
   
    int a,b;
    cin >> a >> b;
    if(a == 2 || b == 1){
   
   
        cout << "-\n";
        if(a == 0){
   
   
            cout << "stop\n";
        }else if(a == 1){
   
   
            cout << "move\n";
        }else{
   
   
            cout << "stop\n";
        }
    }else{
   
   
        if(a == 0){
   
   
            cout << "biii\n";
            cout << "stop\n";
        }else if(a == 1){
   
   
            cout << "dudu\n";
            cout << "move\n";
        }
    }
}

⭐L1-100 四项全能(10 分)

题目描述:

在这里插入图片描述

新浪微博上有一个帖子给出了一道题:全班有 50 人,有 30 人会游泳,有 35 人会篮球,有 42 人会唱歌,有 46 人会骑车,至少有( )人四项都会。
发帖人不会做这道题,但是回帖有会做的:每一个才艺是一个技能点,一共是 30 + 35 + 42 + 46 = 153 个技能点,50 个人假设平均分配,每人都会 3 个技能那也只有 150,所以至少有 3 人会四个技能。
本题就请你写个程序来自动解决这类问题:给定全班总人数为 n,其中有 m 项技能,分别有 k 1 、k 2 、……、k m个人会,问至少有多少人 m 项都会。

输入格式:

输入在第一行中给出 2 个正整数:n(4≤n≤1000)和 m(1<m≤n/2),分别对应全班人数和技能总数。随后一行给出 m 个不超过 n 的正整数,其中第 i 个整数对应会第 i 项技能的人数。

输出格式:

输出至少有多少人 m 项都会。

输入样例:

50 4
30 35 42 46

输出样例:

3

解题思路:

赛时的时候也没拿满,一开始8分然后后面改了下9分,还一分是n(班级人数)大于 总技能点的情况没有考虑到。

⭐Code::

#include<bits/stdc++.h>
using namespace std;

int main(){
   
   
    int n,m;
    cin >> n >> m;
    int minn = 1e9;
    int ans = 0;
    int sum = 0;
    for(int i = 1;i <= m;i ++){
   
   
        int x;
        cin >> x;
        sum += x;
        minn = min(minn,x);
    }
    ans = sum - (n * (sum / n));
    if(sum / m >= n){
   
   
        ans = n;
    }
    if(n > sum){
   
   
        cout << "0";
    }else{
   
   
      cout << min
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈童学哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值