第五届“传智杯”全国大学生计算机大赛(练习赛)水题题解
目录
复读
题目描述
输入格式
输出格式
输入输出
说明/提示
源代码
时钟
题目描述
输入格式
输出格式
输入输出
说明/提示
源代码
平等的交易
题目描述
输入格式
输出格式
输入输出
说明/提示
源代码
清洁工
题目描述
输入格式
输出格式
输入输出样例
说明/提示
源代码
复读
题目描述
给定若干个字符串,不定数量,每行一个。有些字符串可能出现了多次。如果读入一个字符串后,发现这个字符串以前被读入过,则这个字符串被称为前面相同的字符串的复读,这个字符串被称为复读字符串。相应的,每个首次出现的字符串就是非复读字符串。
举个例子,
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 ! , …...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
