团体程序设计天梯赛(上)

简介: 团体程序设计天梯赛

L1-1 今天我要赢

2018 年我们曾经出过一题,是输出“2018 我们要赢”。今年是 2022 年,你要输出的句子变成了“我要赢!就在今天!”然后以比赛当天的日期落款。


输入格式:

本题没有输入。

输出格式:

输出分 2 行。在第一行中输出 I’m gonna win! Today!,在第二行中用 年年年年-月月-日日 的格式输出比赛当天的日期。已知比赛的前一天是 2022-04-22。


输入样例:


输出样例(第二行的内容要你自己想一想,这里不给出):

I'm gonna win! Today!
这一行的内容我不告诉你…… 你要自己输出正确的日期呀~
#include <bits/stdc++.h>
using namespace std;
int main()
{
    cout << "I'm gonna win! Today!\n2022-04-23";
    return 0;
}


L1-2 种钻石

dc6f5201c1a14c83ae2d1484a6c47e56.png

2019年10月29日,中央电视台专题报道,中国科学院在培育钻石领域,取得科技突破。科学家们用金刚石的籽晶片作为种子,利用甲烷气体在能量作用下形成碳的等离子体,慢慢地沉积到钻石种子上,一周“种”出了一颗 1 克拉大小的钻石。


本题给出钻石的需求量和人工培育钻石的速度,请你计算出货需要的时间。


输入格式:

输入在一行中给出钻石的需求量 N(不超过 107 的正整数,以微克拉为单位)和人工培育钻石的速度 v(1≤v≤200,以微克拉/天为单位的整数)。


输出格式:

在一行中输出培育 N 微克拉钻石需要的整数天数。不到一天的时间不算在内。


输入样例:

102000 130


输出样例:

784


#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a,b;
    cin >> a >> b;
    cout << a / b;
    return 0;
}


L1-3 谁能进图书馆

为了保障安静的阅读环境,有些公共图书馆对儿童入馆做出了限制。例如“12 岁以下儿童禁止入馆,除非有 18 岁以上(包括 18 岁)的成人陪同”。现在有两位小/大朋友跑来问你,他们能不能进去?请你写个程序自动给他们一个回复。


输入格式:

输入在一行中给出 4 个整数:


禁入年龄线 陪同年龄线 询问者1的年龄 询问者2的年龄

这里的禁入年龄线是指严格小于该年龄的儿童禁止入馆;陪同年龄线是指大于等于该年龄的人士可以陪同儿童入馆。默认两个询问者的编号依次分别为 1 和 2;年龄和年龄线都是 [1, 200] 区间内的整数,并且保证 陪同年龄线 严格大于 禁入年龄线。


输出格式:

在一行中输出对两位询问者的回答,如果可以进就输出 年龄-Y,否则输出 年龄-N,中间空 1 格,行首尾不得有多余空格。


在第二行根据两个询问者的情况输出一句话:


如果两个人必须一起进,则输出 qing X zhao gu hao Y,其中 X 是陪同人的编号, Y 是小孩子的编号;

如果两个人都可以进但不是必须一起的,则输出 huan ying ru guan;

如果两个人都进不去,则输出 zhang da zai lai ba;

如果一个人能进一个不能,则输出 X: huan ying ru guan,其中 X 是可以入馆的那个人的编号。


输入样例 1:

12 18 18 8


输出样例 1:

18-Y 8-Y
qing 1 zhao gu hao 2


输入样例 2:

12 18 10 15


输出样例 2:

10-N 15-Y
2: huan ying ru guan
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c,d;
    cin >> a >> b >> c >> d;
    if(c >= a && d >= a) printf("%d-Y %d-Y\nhuan ying ru guan",c,d);
    else if(c < a && d < a) printf("%d-N %d-N\nzhang da zai lai ba",c,d);
    else if(c >= b) printf("%d-Y %d-Y\nqing 1 zhao gu hao 2",c,d);
    else if(d >= b) printf("%d-Y %d-Y\nqing 2 zhao gu hao 1",c,d);
    else if(c >= a && d < a) printf("%d-Y %d-N\n1: huan ying ru guan",c,d);
    else if(c < a && d >= a) printf("%d-N %d-Y\n2: huan ying ru guan",c,d);
    return 0;
}


L1-4 拯救外星人

635e9d099d424af08b454d66785376b3.png

你的外星人朋友不认得地球上的加减乘除符号,但是会算阶乘 —— 正整数 N 的阶乘记为 “N!”,是从 1 到 N 的连乘积。所以当他不知道“5+7”等于多少时,如果你告诉他等于“12!”,他就写出了“479001600”这个答案。


本题就请你写程序模仿外星人的行为。


输入格式:

输入在一行中给出两个正整数 A 和 B。


输出格式:

在一行中输出 (A+B) 的阶乘。题目保证 (A+B) 的值小于 12。


输入样例:

3 6


输出样例:

362880
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,sum = 1;
    cin >> a >> b;
    int n = a + b;
    for(int i=1;i<=n;i++)
        sum *= i;
    cout << sum;
    return 0;
}


L1-5 试试手气

我们知道一个骰子有 6 个面,分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态,即它们朝上一面的点数,让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙,每次摇出的结果都满足以下两个条件:


1、每个骰子摇出的点数都跟它之前任何一次出现的点数不同;

2、在满足条件 1 的前提下,每次都能让每个骰子得到可能得到的最大点数。

那么你应该可以预知自己第 n 次(1≤n≤5)摇出的结果。


输入格式:

输入第一行给出 6 个骰子的初始点数,即 [1,6] 之间的整数,数字间以空格分隔;第二行给出摇的次数 n(1≤n≤5)。


输出格式:

在一行中顺序列出第 n 次摇出的每个骰子的点数。数字间必须以 1 个空格分隔,行首位不得有多余空格。


输入样例:

3 6 5 4 1 4
3


输出样例:

4 3 3 3 4 3


样例解释:

这 3 次摇出的结果依次为:

6 5 6 6 6 6
5 4 4 5 5 5
4 3 3 3 4 3
#include <bits/stdc++.h>
using namespace std;
int k;
int a[10];
int main()
{
    for(int i=0;i<6;i++) cin >> a[i];
    cin >> k;
    for(int i=0;i<6;i++)
    {
        if(a[i] < 6 - k + 1) a[i] = 6 - k + 1;
        else a[i] = 6 - k;
    }
    for(int i=0;i<6;i++)
    {
        if(i) cout << ' ';
        cout << a[i];
    }
    return 0;
}


L1-6 斯德哥尔摩火车上的题

663bedd6725c42f7ad89888d20cd733a.png


上图是新浪微博上的一则趣闻,是瑞典斯德哥尔摩火车上的一道题,看上去是段伪代码:

s = ''
a = '1112031584'
for (i = 1; i < length(a); i++) {
  if (a[i] % 2 == a[i-1] % 2) {
    s += max(a[i], a[i-1])
  }
}
goto_url('www.multisoft.se/' + s)


其中字符串的 + 操作是连接两个字符串的意思。所以这道题其实是让大家访问网站 www.multisoft.se/112358(注意:比赛中千万不要访问这个网址!!!)。


当然,能通过上述算法得到 112358 的原始字符串 a 是不唯一的。本题就请你判断,两个给定的原始字符串,能否通过上述算法得到相同的输出?


输入格式:

输入为两行仅由数字组成的非空字符串,长度均不超过 104,以回车结束。


输出格式:

对两个字符串分别采用上述斯德哥尔摩火车上的算法进行处理。如果两个结果是一样的,则在一行中输出那个结果;否则分别输出各自对应的处理结果,每个占一行。题目保证输出结果不为空。


输入样例 1:

1112031584
011102315849


输出样例 1:

112358


输入样例 2:

111203158412334
12341112031584


输出样例 2:

1123583
112358
#include <bits/stdc++.h>
using namespace std;
int main()
{
    string s1,s2,f1,f2;
    cin >> s1 >> s2;
    for(int i=1;i<s1.size();i++)
        if(s1[i] % 2 == s1[i - 1] % 2)
            f1 += max(s1[i],s1[i - 1]);
    for(int i=1;i<s2.size();i++)
        if(s2[i] % 2 == s2[i - 1] % 2)
            f2 += max(s2[i],s2[i - 1]);
    if(f1 != f2) cout << f1 << endl << f2;
    else cout << f1;
    return 0;
}


L1-7 机工士姆斯塔迪奥

在 MMORPG《最终幻想14》的副本“乐欲之所瓯博讷修道院”里,BOSS 机工士姆斯塔迪奥将会接受玩家的挑战。


你需要处理这个副本其中的一个机制:N×M 大小的地图被拆分为了 N×M 个 1×1 的格子,BOSS 会选择若干行或/及若干列释放技能,玩家不能站在释放技能的方格上,否则就会被击中而失败。


给定 BOSS 所有释放技能的行或列信息,请你计算出最后有多少个格子是安全的。


输入格式:

输入第一行是三个整数 N,M,Q (1≤N×M≤105,0≤Q≤1000),表示地图为 N 行 M 列大小以及选择的行/列数量。


接下来 Q 行,每行两个数 T i ,C i ,其中 Ti=0 表示 BOSS 选择的是一整行,Ti =1 表示选择的是一整列,Ci为选择的行号/列号。行和列的编号均从 1 开始。


输出格式:

输出一个数,表示安全格子的数量。


输入样例:

5 5 3
0 2
0 4
1 3


输出样例:

12


思路: 二维数组有个点过不去,空间会炸掉,所以我们需要使用两个一维数组,分别标记行和列,然后把没有标记过的输出就行了

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int f1[N],f2[N];
int main()
{
    int n,m,q;
    cin >> n >> m >> q;
    while(q -- )
    {
        int a,b;
        cin >> a >> b;
        if(a == 0)
            f1[b] = 1;
        else
            f2[b] = 1;
    }
    int res = 0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(!f1[i] && !f2[j]) res ++;
    cout << res << endl;
    return 0;
}


L1-8 静静的推荐

天梯赛结束后,某企业的人力资源部希望组委会能推荐一批优秀的学生,这个整理推荐名单的任务就由静静姐负责。企业接受推荐的流程是这样的:


只考虑得分不低于 175 分的学生;

一共接受 K 批次的推荐名单;

同一批推荐名单上的学生的成绩原则上应严格递增;

如果有的学生天梯赛成绩虽然与前一个人相同,但其参加过 PAT 考试,且成绩达到了该企业的面试分数线,则也可以接受。

给定全体参赛学生的成绩和他们的 PAT 考试成绩,请你帮静静姐算一算,她最多能向企业推荐多少学生?


输入格式:

输入第一行给出 3 个正整数:N(≤105)为参赛学生人数,K(≤5×103)为企业接受的推荐批次,S(≤100)为该企业的 PAT 面试分数线。


随后 N 行,每行给出两个分数,依次为一位学生的天梯赛分数(最高分 290)和 PAT 分数(最高分 100)。


输出格式:

在一行中输出静静姐最多能向企业推荐的学生人数。


输入样例:

10 2 90
203 0
169 91
175 88
175 0
175 90
189 0
189 0
189 95
189 89
256 100


输出样例:

8


样例解释:

第一批可以选择 175、189、203、256 这四个分数的学生各一名,此外 175 分 PAT 分数达到 90 分的学生和 189 分 PAT 分数达到 95 分的学生可以额外进入名单。第二批就只剩下 175、189 两个分数的学生各一名可以进入名单了。最终一共 8 人进入推荐名单。


思路:把得分不低于 175 分的学生并且成绩达到了该企业的面试分数线的特殊人群先进行推荐,然后分批推荐,这样就可以使推荐人数达到最大


#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N],b[N];
int main()
{
    int n,k,s,res = 0;
    map<int,int>mp;
    cin >> n >> k >> s;
    for(int i=0;i<n;i++) cin >> a[i] >> b[i];
    for(int i=0;i<n;i++)
    {
        if(a[i] >= 175 && b[i] >= s)
        {
            a[i] = 0;
            res ++;
        }
        if(mp[a[i]] < k && a[i] >= 175)
        {
            res ++;
            mp[a[i]] ++;
        }
    }
    cout << res;
    return 0;
}
目录
相关文章
|
前端开发 开发者 容器
【专栏:CSS基础篇】CSS定位与布局:从静态到浮动、定位
【4月更文挑战第30天】本文介绍了CSS定位与布局的基础,包括静态、相对、绝对、固定定位以及浮动。静态定位遵循HTML顺序,相对定位可在正常位置基础上偏移,不占用额外空间。绝对定位基于最近已定位祖先元素定位,脱离文档流。固定定位相对于浏览器窗口定位,无视页面滚动。浮动用于文字环绕图片等,可能导致父元素高度塌陷。Flexbox布局提供更灵活的元素排列和对齐方式,适配各种复杂布局需求。理解并掌握这些布局技术能提升网页设计的灵活性和响应性。
277 0
|
1天前
|
云安全 数据采集 人工智能
古茗联名引爆全网,阿里云三层防护助力对抗黑产
阿里云三层校验+风险识别,为古茗每一杯奶茶保驾护航!
古茗联名引爆全网,阿里云三层防护助力对抗黑产
|
5天前
|
Kubernetes 算法 Go
Kubeflow-Katib-架构学习指南
本指南带你深入 Kubeflow 核心组件 Katib,一个 Kubernetes 原生的自动化机器学习系统。从架构解析、代码结构到技能清单与学习路径,助你由浅入深掌握超参数调优与神经架构搜索,实现从使用到贡献的进阶之旅。
278 139
|
5天前
|
人工智能 中间件 API
AutoGen for .NET - 架构学习指南
《AutoGen for .NET 架构学习指南》系统解析微软多智能体框架,涵盖新旧双架构、核心设计、技术栈与实战路径,助你从入门到精通,构建分布式AI协同系统。
296 142
|
16天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
11天前
|
缓存 并行计算 PyTorch
144_推理时延优化:Profiling与瓶颈分析 - 使用PyTorch Profiler诊断推理延迟,优化矩阵运算的独特瓶颈
在2025年的大模型时代,推理时延优化已经成为部署LLM服务的关键挑战之一。随着模型规模的不断扩大(从数亿参数到数千亿甚至万亿参数),即使在最先进的硬件上,推理延迟也常常成为用户体验和系统吞吐量的主要瓶颈。
359 147
|
5天前
|
人工智能 移动开发 自然语言处理
阿里云百炼产品月刊【2025年9月】
本月通义千问模型大升级,新增多模态、语音、视频生成等高性能模型,支持图文理解、端到端视频生成。官网改版上线全新体验中心,推出高代码应用与智能体多模态知识融合,RAG能力增强,助力企业高效部署AI应用。
298 1
|
11天前
|
机器学习/深度学习 存储 缓存
92_自我反思提示:输出迭代优化
在大型语言模型(LLM)应用日益普及的今天,如何持续提升模型输出质量成为了业界关注的核心问题。传统的提示工程方法往往依赖一次性输入输出,难以应对复杂任务中的多轮优化需求。2025年,自我反思提示技术(Self-Reflection Prompting)作为提示工程的前沿方向,正在改变我们与LLM交互的方式。这项技术通过模拟人类的自我反思认知过程,让模型能够对自身输出进行评估、反馈和优化,从而实现输出质量的持续提升。
440 136
|
15天前
|
存储 人工智能 搜索推荐
终身学习型智能体
当前人工智能前沿研究的一个重要方向:构建能够自主学习、调用工具、积累经验的小型智能体(Agent)。 我们可以称这种系统为“终身学习型智能体”或“自适应认知代理”。它的设计理念就是: 不靠庞大的内置知识取胜,而是依靠高效的推理能力 + 动态获取知识的能力 + 经验积累机制。
415 135