第五届“传智杯”全国大学生计算机大赛(练习赛)水题题解
目录
复读
题目描述
输入格式
输出格式
输入输出
说明/提示
源代码
时钟
题目描述
输入格式
输出格式
输入输出
说明/提示
源代码
平等的交易
题目描述
输入格式
输出格式
输入输出
说明/提示
源代码
清洁工
题目描述
输入格式
输出格式
输入输出样例
说明/提示
源代码
复读
题目描述
给定若干个字符串,不定数量,每行一个。有些字符串可能出现了多次。如果读入一个字符串后,发现这个字符串以前被读入过,则这个字符串被称为前面相同的字符串的复读,这个字符串被称为复读字符串。相应的,每个首次出现的字符串就是非复读字符串。
举个例子,
abc
def
abc
abc
abc
第 1,3,4,51,3,4,5 行是字符串 abc
,那么 3,4,53,4,5 行的字符串会被称为“复读”。
请你把所有的非复读字符串,按照行号从小到大的顺序,依次拼接为一个长串并输出。
输入格式
多个字符串,每行一个,含义见题目描述。
注意:如果这个字符串是 0
,说明所有字符串都读完了。这个 0
不认为是一个“非复读字符串”。
输出格式
共一行,表示所有非复读字符串,按照行号从小到大依次连接的结果。
输入输出
输入
cc
b
a
cc
0
输出
ccba
说明/提示
【数据范围】
字符串的个数不超过 500 个,字符串总长度不超过 50000,每个字符串中只包含小写字母、数字、 .
、!
和 &
,不包含空格等特殊符号。
源代码
标准水题,查重字符串,重复不接尾,对于字符串数组输出即可
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> A;
int main()
{string s;while(cin >> s,s != "0"){vector<string>::iterator it = find(A.begin(),A.end(),s);if(it != A.end())A.push_back(s);}for(int i = 0;i < A.size();i ++ )cout << A[i]; return 0; }
时钟
题目描述
你有一个电子钟,可以显示 0:00
到 23:59
之间的所有时间,以数字的形式显示。其中小时是 0
到 23
(0 时会显示一个 0,而 1 到 9 时不会显示前导 0),分钟是 00
到 59
(0 到 9 分都会显示前导 0)。任何时刻,电子钟都会显示三个或者四个 00 到 99 的数字。如果在某时刻,这些数字依次组成了一个等差数列,则这个时刻被称为“好时刻”。
你感觉很无聊,从 0:00
时刻开始盯着这个电子钟。一共盯了 xx 分钟。请问整个过程中,"好时刻"来临了多少次(算上开头和结尾)?
输入格式
一个不超过 10^9 的非负整数。
输出格式
请输出"好时刻"来临了多少次?
输入输出
输入
120
输出
10
输入
2880
输出
79
输入
987654321
输出
26748975
说明/提示
【样例解释】
你观察了 2 个小时,其中这些“好时刻”来临了:
0:00
0:12
0:24
0:36
0:48
1:11
1:23
1:35
1:47
1:59
一共是 10 个。
源代码
最后一个数据点把暴力做法卡掉了,因此我们可以采用打表的思维,由打表可得,算上从0:00-23:59,一共有39个“好时刻”,因此,我们只需要不断的卡掉1400即可,卡掉一个ans就加39,因此,即使数据为10^9左右,我们处理数据的次数也因1400而优化了许多,所以不会TLE
#include <iostream>
using namespace std;
typedef long long ll;
int main()
{ll n; scanf("%lld",&n);ll sum = 0,ans = 0;while(n > 1439){n = n - 1440;ans += 39;}for(ll i = 0;sum <= n;i ++,sum ++ ){if(i == 1440)i = 0;if(i == 0 || i == 12 || i == 24 || i == 36 || i == 48 || i == 71 || i == 83 || i == 95 || i == 107 || i == 119 || i == 130 || i == 142 || i == 154 || i == 166 || i == 178 || i == 201 || i == 213 || i == 225 || i == 237 || i == 260 || i == 272 || i == 284 || i == 296 || i == 331 || i == 343 || i == 355 || i == 390 || i == 402 || i == 414 || i == 461 || i == 473 || i == 520 || i == 532 || i == 591 || i == 671 || i == 754 || i == 837 || i == 1342 || i == 1425)ans ++ ;} printf("%lld",ans);
}
平等的交易
题目描述
你有 n 件道具可以买,其中第 i 件的价格为 ai。
你有 w 元钱。你仅能用钱购买其中的一件商道具。当然,你可以拿你手中的道具换取其他的道具,只是这些商道具的价值之和,不能超过你打算交换出去的道具。你可以交换无数多次道具。道具的价值可能是 0,但是你不能使用空集换取价值为 0 的商品。
请问,在这个条件下,最多可以换取多少件道具?
输入格式
第一行一个正整数 n,表示道具个数。
接下来一行 n 个正整数,表示 an。
接下来一行 1 个正整数,表示 w。
输出格式
一个正整数,表示答案。
输入输出
输入
3
1 1 2
5
输出
2
说明/提示
【样例解释】
买价值为 2 的道具,并交换为两个价值为 1 的道具。
【数据范围及约束】
测试数据满足,1≤n≤106,0≤ai≤10^9,1≤w≤2×10^9。
源代码
非常简单的一道题目,连二分都不用,我们只需要对于所有商品进行升序的排序,而后从队尾开始查,只要有商品的价值小于等于w,那么我们可以将其买下,更新w = a[i],ans = 1(ans初始化为0),利用前缀和思想处理排序后的数组,而后对于我们所买的商品的前一个下标开始向前遍历前缀和数组,若是前缀和数组s[i]的值小于w,证明我们手中的价值足以购买前i件商品,则答案更新为ans和i之间更大的值(因为i可能为1)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 1000000 + 10;
typedef long long ll;
ll a[N],s[N],n,w,ans = 0,idx;
int main()
{scanf("%lld",&n);for(ll i = 1;i <= n;i ++ )scanf("%lld",&a[i]);scanf("%lld",&w);sort(a + 1,a + 1 + n);for(ll i = 1;i <= n;i ++ )s[i] = s[i - 1] + a[i];for(ll i = n;i >= 1;i -- ){if(w > a[i]){ans = 1;w = a[i];idx = i - 1;break;}}for(ll i = idx;i >= 1;i -- ){if(w >= s[i]){ans = max(ans,i);break;}}cout << ans << endl;return 0;
}
清洁工
题目描述
有一个 n×n 的地块,一个连续 i 分钟没人经过的地面在第 i 分钟会落上 i 个单位的灰,有人经过时不会落灰但灰也不会清零,在人走后第一分钟又会落上一个单位的灰,以此类推。你在这个 n×n 的范围内移动,你的移动轨迹可以描述为一个由 N,S,W,E 组成的字符串,每个字母分别表示上、下、左、右。这个人一开始在点 (x,y),每一分钟移动一步。
求最后每一个位置上落下的灰的量。
本题中的上和右分别表示 y 轴正方向和 x 轴正方向。保证你没有超过移动的范围。
输入格式
第一行四个正整数 n,m,x,y,含义如题面所示,其中 x,y 表示横纵坐标,不是数组下标。
第二行一个长度为 m 的字符串,表示你的移动序列。
输出格式
共n 行,每行 n 个数,第 i 行的第 j 个数表示坐标 (j,n−i+1) 上的灰的数量
输入输出样例
输入
5 4 1 1
NENW
输出
10 10 10 10 10
10 10 10 10 10
10 6 10 10 10
4 4 10 10 10
6 10 10 10 10
输入
7 14 1 1
NENENENENESSSS
输出
105 105 105 105 105 105 105
105 105 105 105 55 61 105
105 105 105 49 51 69 105
105 105 51 49 105 79 105
105 61 55 105 105 91 105
79 69 105 105 105 105 105
91 105 105 105 105 105 105
输入
10 70 2 2
NWSNSNNNSNNSSNNSENNNNEESNWSESESSWENNSEWESWWWESEEESENNSENWNESNWSNNNEESS
输出
2485 2485 2485 2485 2485 2485 2485 2485 2485 2485
2485 1407 1205 1267 2485 2485 2485 2485 2485 2485
2485 1435 1281 1167 2485 2485 2485 2217 2281 2347
2485 1465 2485 1255 1041 2485 2485 2155 2485 2415
1557 1497 2485 2485 969 1177 2485 1733 1807 2485
1471 1531 1315 907 935 1267 2485 1473 1647 2485
1631 2485 2485 1357 1381 1407 1435 1499 1645 2485
2021 2347 2485 2485 2485 2485 1465 1497 2485 2485
2087 2415 2485 2485 2485 2485 2485 2485 2485 2485
2485 2485 2485 2485 2485 2485 2485 2485 2485 2485
输入
5 4 2 1
NENW
输出
10 10 10 10 10
10 10 10 10 10
10 10 6 10 10
10 4 4 10 10
10 6 10 10 10
说明/提示
本题 y 轴朝上,x 轴朝右,样例输出中的左下角表示 (1,1),第一分钟你在初始点处,第二分钟移动到相应的位置,第 m+1 分钟移动到最后一个点,但是总共只有 m 分钟,因此最后一个点不受移动的影响
样例 1 解释:
你的移动路径为 (1,1)→(1,2)→(2,2)→(2,3)→(1,3),共 4 分钟。
对于第 1 分钟,(1,1) 灰层数不变,其余点被落下了 1 层灰。
对于第 2 分钟,(1,2) 灰层数不变,(1,1) 被落下了 1 层灰,其余点落下 2 层灰。
对于第 3 分钟,(2,2) 灰层数不变,(1,1) 落下 2 层灰,(1,2)(1,2) 落下 1 层灰,其余点落下 3 层灰。
对于第 4 分钟,(2,3) 灰层数不变,(1,1) 落下 3 层灰,(1,2) 落下 2 层灰,(2,2) 落下 1 层灰,其余点落下 4 层灰。
注意最后你移动到了 (1,3),但是时间只有 4 分钟,所以实际上不会对 (1,3) 造成影响。初始点不一定在 (1,1)。
1≤n≤50,1≤m≤1000。
源代码
no 记忆化路径处理
no 二维差分数组处理
no 坐标变幻公式推导
暴力是一种美学
二维数组的大小very small,所以我们不必使用二维差分进行处理,大不了重复遍历就完事儿,只要它不是我们脚下的位置,那么灰尘变化数组ddust则++,反之置为0,在处理过程之中对于sdust数组加上ddust即可,输出也不用管坐标的变换,按照题目输出即可(共n 行,每行 n 个数,第 i 行的第 j 个数表示坐标 (j,n−i+1) 上的灰的数量)
#include <iostream>
using namespace std;
const int N = 1000 + 10;
int sdust[N][N],ddust[N][N];
int n,m,x,y;
string s;
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); cin >> n >> m >> x >> y >> s;for(int idx = 0;idx < s.size();idx ++ ){for(int i = 1;i <= n;i ++ ){for(int j = 1;j <= n;j ++ ){if(i != x || j != y){ddust[i][j] ++ ;sdust[i][j] += ddust[i][j];}else ddust[i][j] = 0;}} if(s[idx] == 'N')y ++;else if(s[idx] == 'S')y -- ;else if(s[idx] == 'W')x -- ;else if(s[idx] == 'E')x ++ ;}for(int i = 1;i <= n;i ++ ){for(int j = 1;j <= n;j ++ ){cout << sdust[j][n - i + 1] << ' ';}cout << endl;}return 0;
}
相关文章:
第五届“传智杯”全国大学生计算机大赛(练习赛)水题题解
目录 复读 题目描述 输入格式 输出格式 输入输出 说明/提示 源代码 时钟 题目描述 输入格式 输出格式 输入输出 说明/提示 源代码 平等的交易 题目描述 输入格式 输出格式 输入输出 说明/提示 源代码 清洁工 题目描述 输入格式 输出格式 输入输出…...

iOS 苹果开发者账号: 查看和添加设备UUID 及设备数量
参考链接:苹果开发者账号下添加新设备UUID - 简书 如果要添加新设备到 Profiles 证书里: 1.登录开发者中心 Sign In - Apple 2.找到证书设置: Certificate,Identifiers&Profiles > Profiles > 选择对应证书 edit &g…...

推进数字园区建设-成都国际数字影像产业园
在当今数字化浪潮的席卷下,数字园区建设已成为推动区域经济发展、提升产业竞争力的关键举措。成都国际数字影像产业园作为数字产业领域的重要项目,以其独特的发展模式和创新实践,在推进数字园区建设方面取得了显著成效,为数字产业…...

oracle linux8.10+ oracle 23ai安装
介质准备: 数据库23ai https://edelivery.oracle.com 上述网站下载基础版本,本次未使用。 本次是安装了带补丁的版本: Database Release Update 23.6.0.24.10 GoldImage表示带补丁用于直接安装的软件包 查找888.1对应Primary Note for …...

PH热榜 | 2024-12-25
1. Assistive24 标语:为残障人士提供的免费辅助技术 介绍:Assistive24 是一款免费的 Chrome 浏览器扩展程序,可以帮助患有注意力缺陷多动障碍 (ADHD)、阅读障碍 (dyslexia) 和低视力等障碍的用户更方便地浏览网页。它提供语音导航、自定义…...
OpenCV相机标定与3D重建(36)计算两幅图像之间基本矩阵(Fundamental Matrix)的函数findFundamentalMat()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 从两幅图像中的对应点计算基本矩阵。 cv::findFundamentalMat 是 OpenCV 中用于计算两幅图像之间基本矩阵(Fundamental Matrix&#…...

ZLG嵌入式笔记 | 电源设计避坑(上)
产品上量后,通常都会有降成需求。多年来,接触过不少产品降成案例,在电源上下刀过猛,引发了产品偶发性问题,带来了很不好的负面影响。本文将对这些案例进行总结,提供电源设计参考,确保产品降成不…...
.NET能做什么?全面解析.NET的应用领域
.NET 是由微软开发的一个开源、跨平台的开发框架。它不仅支持构建各种应用程序,还能运行在不同的操作系统上,包括 Windows、Linux 和 macOS。自从 .NET Core 的推出,.NET 成为了一个现代化的开发平台,能够满足企业和开发者日益多样…...

初始JavaEE篇 —— 网络原理---传输层协议:深入理解UDP/TCP
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 UDP协议 参数解析: 校验和的计算 TCP协议 参数解析: 确认应答机制 超时重传 连接管理 三次握…...

企业如何搭建安全的跨网文件安全交换管理系统
在数字化转型的浪潮中,企业对数据的安全性和流动性提出了前所未有的高要求。特别是在网络隔离的情况下,如何实现跨网的安全、高效的文件交换成为了众多企业迫切需要解决的问题。 这不仅是技术上的挑战,还涉及到企业内部管理流程的优化和安全策…...
2023 年 12 月青少年软编等考 C 语言四级真题解析
目录 T1. 移动路线T2. 公共子序列T3. 田忌赛马T4. 宠物小精灵之收服 T1. 移动路线 此题为 2021 年 12 月四级第一题原题,见 2021 年 12 月青少年软编等考 C 语言四级真题解析中的 T1。 T2. 公共子序列 此题为 2022 年 3 月四级第四题原题,见 2022 年 …...
GDPU Vue前端框架开发 期末赛道出勇士篇(更新ing)
记住,年底陪你跨年的不会仅是方便面跟你的闺蜜,还有孑的笔记。 选择题 1.下列选项用于设置Vue.js页面视图的元素是()。 A. Template B. script C. style D. title 2.下列选项中能够定义Vuejs根实例对象的元素是(&…...

老旧小区用电安全保护装置#限流式防火保护器参数介绍#
摘要 随着居民住宅区用电负荷的增加,用电安全问题日益突出,火灾隐患频繁发生。防火限流式保护器作为一种新型电气安全设备,能够有效预防因电气故障引发的火灾事故。本文介绍了防火限流式保护器的工作原理、技术特点及其在居民住宅区用电系统…...

7.C语言 宏(Macro) 宏定义,宏函数
目录 宏定义 宏函数 1.注释事项 2.注意事项 宏(Macro)用法 常量定义 简单函数实现 类型检查 条件编译 宏函数计算参数个数 宏定义进行类型转换 宏定义进行位操作 宏定义进行断言 总结 宏定义 #include "stdio.h" #include "string.h" #incl…...

4.系统学习-集成学习
集成学习 前言Bias and Variance过拟合(overfitting)与欠拟合(underfitting)集成学习为什么有效?Blending 模型集成Stakcing 模型集成Bagging模型集成Bagging 模型集成算法流程:Boosting模型集成作业 前言 …...
Max AI prompt2:
1,prompt1——总体概览 “请根据以下指导原则撰写文献解读,特别关注作者的研究思路和方法论: 1. 研究背景与目的: 概述文章研究的背景,明确研究的主要目的和研究问题。 2. 研究思路: 详细描述作者如何构建…...
[Unity Shader][图形渲染]【游戏开发】 Shader数学基础8 - 齐次坐标
在计算机图形学中,齐次坐标是一种方便计算和表示几何变换的方式。通过将三维空间中的 33矩阵扩展为 44的形式,可以统一表示平移、旋转、缩放等几何变换操作。在本篇文章中,我们将详细解析齐次坐标的定义及其在图形变换中的应用。 什么是齐次坐标? 齐次坐标的核心思想是通过…...

挑战一个月基本掌握C++(第十二天)了解命名空间,模板,预处理器
一 命名空间 假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。 同样的情况也出现在 …...
python实现根据搜索关键词爬取某宝商品信息
当程序打开淘宝登陆页面后,需要快速手动登录淘宝,如果服务报错,需要重新登录! pip安装库 pip install pyquery pip install selenium pip install openpyxl # 代码说明:代码功能: 基于ChromeDriver爬取tao…...
Posison Distribution
泊松分布 (Poisson Distribution) 泊松分布是概率论中的一个重要离散分布,描述单位时间或单位空间内随机事件发生的次数,假设事件是独立的且平均发生率是已知的。 定义 泊松分布的概率质量函数 (PMF) 为: P ( X k ) λ k e − λ k ! , …...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...

rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...

CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...