上海市计算机学会竞赛平台(iai.sh.cn)2023一月月赛(丙组)解题报告

上海市计算机学会竞赛平台 2023.3月赛 看上面的程序,有很多判断是重复的(好多判了两次及以上),我们再看题目,可以发现:其实,数列里的数字大小对我们无所谓,我们关注的只有其是否大于K。这题可以看做找规律,因为这个歌是循环播放的,所以当T大于所有歌时间和(假设为tim)时,在模拟就没有意义了,因为tim分钟后,又回到第一首,这和问第(T-tim)分钟播放的曲子是一样的。用一个变量记录现在播放了多久,每次加上现在播放歌的时间,当超过n时,输出首歌的序号。正常超时,但因数都是成对出现的,即当a是n因子时,n/a也是n因数,二者分布在。 阅读详情

实验日志

内存限制: 256 Mb时间限制: 1000 ms。

题目描述

小爱正在完成一个物理实验,为期n天,其中第i天,小爱会记录aia_iai​条实验数据在实验日志中。已知小爱的实验日志每一页最多纪录m条数据,每天做完实验后他都会将日志合上,第二天,他便从第一页开始依次翻页,直到找到第一个有空白位置的页码为止,开始新一天的数据记录。
请问在整个实验过程中,小爱每天为了找到第一个空白位置,需要翻多少页?

输入格式

输入共两行
第一行,两个正整数n,m。
第二行,n个正整数,表示每天的数据条数。

输出格式

输出共一行,n个正整数,分别表示每一天开始实验前,需要翻的页数。

数据范围

对于 30%30\%30% 的数据,1≤n≤1001\leq n\leq 1001≤n≤100
对于 60%60\%60% 的数据,1≤n≤1041\leq n\leq 10^41≤n≤104
对于 100%100% 的数据,1≤n≤1051\leq n\leq 10^51≤n≤105
1≤m,ai≤1041\leq m,a_i\leq 10^41≤m,ai​≤104

样例数据

输入:

4 10
7 8 5 12

输出:

0 0 1 2

说明:

第一天不用翻页
第二天开始前,由于只记了7条,仍是从第一页开始,不用翻页
第三天开始前,共记录了15条,则是从第二页开始,需翻1页
第四天开始前,共记录了20条,由于第二页已写满,则是从第三页开始,需翻2页

解题思路

不断加入当前页数除以每一页的页数同时输出

代码展示

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

const int MAXN=1e5+10;

int n,m,a[100100],cnt=0;

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cout<<cnt/m<<" ";
		cin>>a[i];
		cnt+=a[i];
	}
	return 0;
}

凯撒加密

内存限制: 256 Mb时间限制: 1000 ms

题目描述

恺撒密码是一种广为人知的加密技术。恺撒把需要加密的字母按字母表向后移动 3 位,替换成密文字母。例如,所有的 A 将被变成 D,B 变成 E 等等。若要加密最后三个字母,则需要折回到前三个字母,比如 x 变 a,y变 b,z 变 c。例如以下明TheQuickBrownFoxJumpsOverTheLazyDog将被加密成WkhTxlfnEurzqIraMxpsvRyhuWkhOdcbGrj给定一段只由拉丁字母组成的字符序列,请将它用凯撒加密成密文。

输入格式

一个字符序列:表示需要加密的明文

输出格式

一个字符序列:表示加密后的密文

数据范围

设输入的字符数量为 n,则保证 1≤n≤100,0001\leq n\leq 100,0001≤n≤100,000

样例数据

输入:

TheQuickBrownFoxJumpsOverTheLazyDog

输出:

WkhTxlfnEurzqIraMxpsvRyhuWkhOdcbGrj

解题思路

不断挪动每个字母的ASCII值即可,除了后三个要特判一下
注:网站数据可能有问题,会出现不是字母的字符,如果提交想得满分就得全部特判

代码展示

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

char w;

int main(){
	while(cin>>w){
		if(w=='x') cout<<"a";
		if(w=='y') cout<<"b";
		if(w=='z') cout<<"c";
		if(w=='X') cout<<"A";
		if(w=='Y') cout<<"B";
		if(w=='Z') cout<<"C";
		if(w>='a'&&w<='w'||w>='A'&&w<='W') cout<<char(w+3);
	}
	return 0;
}

找零

内存限制: 256 Mb时间限制: 1000 ms

题目描述

有一台自动售票机,每张票卖 5 元。售票机可以接受 5 元、10 元、2020元的纸币。接受大面额纸币时,若没有足够的零钱,售票机将拒绝售票并将纸币退还给客户,若有零钱足够,售票机必须出票并且找零。一开始,售票机里没有任何零钱。每位客户只买一张票也只会塞一张纸币。按照购票顺序,给定售票机收到的 n 张纸币的面额。请统计售货机最多能够卖出多少张票。

输入格式

第一行:单个整数 n
第二行:n 个整数表示 n 名客户分别塞入的纸币面额,保证只能是 5、10、20 中的一个。

输出格式

单个整数:表示售票机卖出的最多票数。

数据范围

1≤n≤50,0001\leq n\leq 50,0001≤n≤50,000

样例数据

输入:

8
10 5 5 5 10 10 20 20

输出:

6

说明:

由于没有零钱,无法把票卖给第一个人和最后一个人

解题思路

这题在赛场上不知道咋回事总是只拿到五十分,重构代码后就得了满分
主要思路就是将5元10元的纸币个数记下来,主要由以下几种可能

  • 五块钱就把票卖出
  • 十块就减去五块
  • 二十就减去一个五块加一个十块或者三个五块,由于五块灵活性更高,所以偏向于减去一个五块加一个十块

代码展示

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

#define int long long

const int MAXN=5e4+10;

int n,a[MAXN],ten=0,five=0,tic=0;

signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]==5){
			five++;
			tic++;
		}
		if(a[i]==10){
			if(five>=1){
				ten++;
				five--;
				tic++;
			}
		}
		if(a[i]==20){
			if(ten>=1){
				if(five>=1){
					tic++;
					ten--;
					five--;
					continue;
				}
			}
			else{
				if(five>=3){
					tic++;
					five-=3;
				}
			}
		}
	}
	cout<<tic<<endl;
	return 0;
}

新年灯会

内存限制: 256 Mb时间限制: 1000 ms

题目描述

新春佳节之际,路上挂起了一排喜气洋洋的大红灯笼,从左至右编号分别为1,2,...,n1,2,...,n1,2,...,n。但小爱发现,目前有p个灯笼不亮了,很是影响美观。
请你帮助小爱计算,最少修复多少个灯笼,便可使道路上有连续m个亮着的大红灯笼?

输入格式

输入共两行:
第一行,三个正整数分别表示n,m,p
第二行,p个正整数,表示已经不亮的灯笼编号

输出格式

输出共一行,一个正整数表示答案

数据范围

对于 30%30\%30% 的数据,1≤m,p≤n≤1001 \leq m,p \leq n \leq 1001≤m,p≤n≤100
对于 60%60\%60% 的数据,1≤m,p≤n≤1041\leq m,p \leq n \leq 10^41≤m,p≤n≤104
对于 100%100\%100% 的数据,1≤m,p≤n≤1051 \leq m,p \leq n \leq 10^51≤m,p≤n≤105

样例数据

输入:

8 5 3
5 1 8

输出:

1

说明:

只需把5号灯笼修好即可

解题思路

把坏掉的灯笼位置记录下来,然后枚举区间为m的串,然后通过前缀和找出每个长度为m中坏掉的路灯最少的即可

代码展示

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

const int MAXN=1e5+10;

int n,m,p,a,vh[MAXN],ans=MAXN;

int main(){
	cin>>n>>m>>p;
	for(int i=1;i<=p;i++){
		cin>>a;
		vh[a]++;
	}
	for(int i=1;i<=n;i++)
		vh[i]+=vh[i-1];
//	for(int i=0;i<=n;i++)
//		cout<<vh[i]<<" ";
	for(int i=1;i<=n-m+1;i++){
		if(vh[i+m-1]-vh[i-1]<ans){
			ans=vh[i+m-1]-vh[i-1];
		}
	}
	cout<<ans<<endl;
	return 0;
}

积木染色(二)

内存限制: 256 Mb时间限制: 1000 ms ## 题目描述 n 块积木排成一排,需要给每块积木染色,颜色有 m 种。请问有多少种方法,从第二块积木开始统计,恰有 p 块积木与前一块积木颜色不同?

输入格式

三个整数分别表示 n,m,p

输出格式

输出满足条件的方案数模10^9+7的结果

数据范围

对于 30%30\%30% 的数据,1≤n,m≤101 \leq n,m \leq 101≤n,m≤10
对于 60%60\%60%的数据,1≤n,m≤5001 \leq n,m \leq 5001≤n,m≤500
对于 100%100\%100% 的数据,1≤n,m≤50001 \leq n,m\leq 50001≤n,m≤5000

输入:

4 2 2

输出:

6

说明:

设两种颜色分别为1,2
则有:1121,1211,1221,2122,2112,2212共计6种

解题思路

f(n,p)={f(n−1,p)+(m−1)×f(n−1,p−1)(p>0)f(n−1,p)(p=0)m(p=0)0(p>0)}n=1f(n,p)=\left\{\begin{matrix} f(n-1,p)+(m-1) \times f(n-1,p-1)&(p>0)\\ f(n-1,p)&(p=0)\\ \left. \begin{matrix} &m &(p=0)\\ &0 &(p>0)\\ \end{matrix} \right\}&n=1 \end{matrix}\right.f(n,p)=⎩⎨⎧​f(n−1,p)+(m−1)×f(n−1,p−1)f(n−1,p)​m0​(p=0)(p>0)​}​(p>0)(p=0)n=1​

注:记得加记忆化,开long long,MOD

代码展示

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

#define int long long

const int MOD=1e9+7;

int n,m,p,a[5010][5010];

int f(int n,int p){
	if(a[n][p]!=-1)
		return a[n][p]%MOD;
	if(n==1){
		if(p==0) return a[n][p]=m;
		if(p>0) return a[n][p]=0;
	}
	if(p>0)
		return a[n][p]=(f(n-1,p)+(m-1)*f(n-1,p-1))%MOD;
	if(p==0)
		return a[n][p]=f(n-1,p)%MOD;
}

signed main(){
	memset(a,-1,sizeof(a));
	cin>>n>>m>>p;
	cout<<f(n,p)<<endl;
}
2022.10 上海市计算机学会月赛试题 2022.10 上海市计算机学会月赛 阅读详情

相关推荐

上海市计算机学会竞赛平台二星级挑战

上海市计算机学会竞赛平台 | 2022 一星级挑战康托表打印K型计算天数黑色星期五分割队伍调配问题(一)阶乘的余数驼峰与蛇四方定理数根IP地址最年长的人选科组合合成游戏循环节的判定中心对称数 此文章仅供学习交流,不得抄袭刷分!!! 可以选择在我的博客上浏览(不用登录就可以复制) 康托表 #include<iostream> using namespace std; int a, b; int main() { cin >> a >> b; cout <<

Dsmtyu《-这是一串密码哦 9229

推荐——上海市计算机学会竞赛平台

今天推荐个网站:上海市计算机学会竞赛平台。里面题挺多的,还可以。

SUPER_SHARK_C的博客 1330

上海市计算机学会竞赛平台 2022 三星级挑战

上海计算机学会2020年5月月赛C++丙组T5最大回撤 第二届上海市青少年算法竞赛小学组T5最后一击 上海计算机学会2021年6月月赛C++丙组T5平衡点 上海计算机学会2021年8月月赛C++丙组T4栈的判断 上海计算机学会2020年4月月赛C++丙组T5吃苹果 上海计算机学会2021年12月月赛C++乙组T2逆波兰式 上海计算机学会2021年9月月赛C++丙组T3股票市场 上海计算机学会2021年5月月赛C++丙组T5城市的中心 上海计算机学会2020年4月月赛C++乙组

长春高老师编程 1450

上海市计算机学会竞赛平台(iai.sh.cn)2023三月月赛(丙组)解题报告

MYOI

Net_bad的博客 1820

上海计算机学会2020年9月月赛C++丙组T2中心对称数

在超市里,有一些价格标签倒置后,数字竟不会发生改变。转置 180 度后不变的十进制数字被称为中心对称数(Strobogrammatic Numbers)。给定一个正整数 s,请判断 s 是否是中心对称数。注意有一部分输入将会非常大。内存限制: 256 Mb时间限制: 1000 ms。是指沿中心旋转 180 度后不变的十进制正整数。记 s 的十进制长度为 n,单个整数:表示 s。

长春高老师编程 753

跨平台烧录实战:RKDevTool在Windows/Linux/MacOS下的统一与差异

本文详细解析了RKDevTool在Windows、Linux和macOS三大操作系统下的固件烧录实践,重点介绍了RK3576开发板的环境配置、工具链选择、烧录模式切换及常见问题解决方案,帮助开发者构建稳定可靠的跨平台烧录工作流。

cnn8visionary的博客 204

上海计算机学会2023年5月月赛C++乙组T2集体舞

n名演员围成一个圆圈跳集体舞,每名演员都有一个位置。演员与位置的编号都是从1开始到n结束。最初,每个演员都站在自己对应的位置编号上。 在舞蹈进行的过程中,陆续会出现若干变换,这些变变换形分成两种类型: 给定一个字符序列,表示集体舞依次经历的变换,输出每个位置在舞蹈结束后的演员编号。

长春高老师编程 737

【QT】基于QSerialPort的跨平台串口通信实战指南

本文是一份基于Qt QSerialPort模块的跨平台串口通信实战指南。详细介绍了从硬件基础、QSerialPort核心类使用、参数配置、设备自动发现到数据异步读写和错误处理的完整流程,并通过构建一个功能齐全的串口调试助手实例,帮助开发者快速掌握在Windows、Linux和macOS系统下进行高效、稳定的串口应用开发。

a1b2c3d的博客 981

上海市计算机学会竞赛平台(iai.sh.cn)十月月赛(丙组)解题报告(前4题AK)

上海市计算机学会竞赛平台(iai.sh.cn)十月月赛(丙组)解题报告(前4题AK)

Net_bad的博客 1057

4D毫米波雷达点云可视化实战:从CANFD原始数据到Matplotlib三维动态图

本文详细介绍了4D毫米波雷达点云可视化实战,从CANFD原始数据解析到Matplotlib三维动态图实现的全流程。通过解析CANFD数据帧结构、点云数据编码原理,并结合Python实现CANFD通信接口,帮助开发者掌握4D雷达数据处理与优化技巧,最终实现高性能的3D点云动态可视化。

u9v0w的博客 568

PCA9548实战:从硬件连接到Linux驱动的I2C扩展全解析

本文详细解析了PCA9548 I2C多路复用器从硬件连接到Linux驱动配置的全过程。涵盖硬件引脚连接、电源去耦、地址选择等关键设计要点,以及Linux驱动加载、设备树配置和应用层编程技巧,帮助开发者高效实现I2C总线扩展。

weixin_28726391的博客 410

上海计算机学会2023年1月月赛C++丙组T3找零题解

有一台自动售票机,每张票卖 5 元。售票机可以接受 5 元、10 元、20元的纸币。接受大面额纸币时,若没有足够的零钱,售票机将拒绝售票并将纸币退还给客户,若有零钱足够,售票机必须出票并且找零。 一开始,售票机里没有任何零钱。 每位客户只买一张票也只会塞一张纸币。按照购票顺序,给定售票机收到的 n 张纸币的面额。请统计售货机最多能够卖出多少张票。

长春高老师编程 1254

FPGA实战:MIG IP核AXI接口DDR3读写优化指南

本文详细解析了FPGA中MIG IP核AXI接口的DDR3读写优化策略,涵盖关键参数配置、突发传输技巧及时序收敛方案。通过AXI接口优化和突发长度选择,可实现高达12.8GB/s的理论带宽,提升DDR3访问效率。文章还提供了Vivado配置实例和调试技巧,助力开发者解决FPGA内存控制中的实际问题。

weixin_29168393的博客 546

上海市计算机学会竞赛平台 2024 年 7 月月赛 丙组详解

上海市计算机学会竞赛平台的月赛似乎越来越水了(或者是我变强了)。上一次参赛还是在 2023 年 8,7,6 月,那时候只能拿一、二等奖(190∼440 分),现在可以 AK 了!愿所有比赛越来越水自己的实力越来越强。

2301_76224755 的博客,一只 OIER,只会 C++。 2212

Deepfake检测模型-PyDeepFakeDet项目复现实验报告-深度学习

该实验是对于https://github.com/wangjk666/PyDeepFakeDet模型的复现。PyDeepFakeDet 是一款集成的、可扩展的 Deepfake 检测工具。目标是提供最先进的 Deepfake 检测模型以及用于在常用 Deepfake 数据集上训练和评估新模型的接口。

一位不是很硕的鉴伪方向硕士 5494

【控制模块算法】控制理论的进修之路

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、(经典)自动控制理论【本科阶段】二、现代控制理论【本科阶段】三、最优控制理论【硕士阶段】总结 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对对控制理论的理解做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、(经典)自动控制理论【本科阶段】 一般控制工程、自动化相关的考研专业课就是自动

qq_35635374的博客 1448

上海计算机学会2023年1月月赛C++丙组-找零

上海计算机学会2023年1月C++月赛:找零

全栈工程师Linda的博客 593

DC Error: The power pin VDD on the cell UASA1/CG_X8_Rdsd2pcm is unconnected. (UPF-581)

【代码】DC Error: The power pin VDD on the cell UASA1/CG_X8_Rdsd2pcm is unconnected. (UPF-581)

baidu_34971492的博客 969

上海计算机学会2023年1月月赛C++丙组T4新年灯会题解

新春佳节之际,路上挂起了一排喜气洋洋的大红灯笼,从左至右编号分别为1,2,...,n。但小爱发现,目前有p个灯笼不亮了,很是影响美观。 请你帮助小爱计算,最少修复多少个灯笼,便可使道路上有连续m个亮着的大红灯笼?

长春高老师编程 720

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上海市计算机学会竞赛平台乙组比赛目录及题解持续更新中

T2 消除交叉 T3 竞速溜冰 T4 多米诺骨牌。T2 放置拼块 T3 制作哒宝 T4 区间交集。T1 发红包 T2 图的三染色 T3 最大子集。T2 千层背包 T3 随处游荡 T4 打字。T2 赛车 T3 围三角 T4 退课。T3 树的匹配 T4 平分子集(三)T3 炼制合金 T4 数三角形(二)T3 降低均值 T4 加与乘(二)T3 子集和(三) T4 社交软件。T3 树的最长路 T4 最大频率。T3 字符填充 T4 看小说。

长春高老师编程 9683

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上海市计算机学会竞赛平台2023年3月月赛丙组

题目描述给定一个由”L","C“,”R“三个字母组成的循环序列:”LCRLCRLCRLC⋯“,这个序列的循环节为“LCR”。现在给定一个数字n,请求出这个序列的第n位是哪个字母。输入格式单个整数:表示 n。输出格式单个字符:表示字母序列的第n个字母。数据范围对于 50% 的数据,1≤n≤1,000,000对于 100% 的数据,1≤n≤1,000,000,000样例数据输入:5输出:C无话可说。longlong。

GaoGuohao2022的博客 968

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上海市计算机学会竞赛平台2022年11月月赛乙组 总结

3h.第一次提交:320pts。比赛结束前:400pts。

SandwichBK的博客 1351

上海市计算机学会竞赛平台(iai.sh.cn)十二月月赛(丙组)解题报告

上海市计算机学会竞赛平台(iai.sh.cn)十二月月赛(丙组)解题报告

Net_bad的博客 1727

上海市计算机学会竞赛平台2023年6月月赛题解

i

lyoi20210204的博客 895

[不公开]iai.sh.cn三月月赛-丙组-T5

#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int arrive[1005]; int main() { int n,h1,m1,h2,m2; char t; cin >> n; for (int i =...

paperboat2020风彩 852
上一篇: USACO 2021 February Contest, Bronze
下一篇: T96344 N皇后问题
Net_bad
博客等级 码龄4年 331粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值