上海市计算机学会竞赛平台(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

保姆级教程:用ComfyUI+LTX-Video插件,5分钟搞定你的第一个AI视频(RTX 4060实测)

本文提供了一份详细的ComfyUI与LTX-Video插件使用指南,帮助用户在RTX 4060显卡上快速生成AI视频。从环境部署到图形化操作,再到提示词优化和性能调优,全面覆盖AI视频生成的各个环节,让零基础用户也能轻松上手。

weixin_33743661的博客 136

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

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

长春高老师编程 737

NotebookLM平替实测:用Open Notebook+Ollama零成本搭建私有AI知识库

本文提供了一份详细的实战指南,教你如何利用Open Notebook与Ollama,在本地零成本搭建一个功能强大且完全私有的AI知识库。通过Docker容器化部署,实现数据绝对安全、模型自由选择与离线运行,是NotebookLM等云端工具的绝佳平替方案,尤其适合注重数据隐私的教育工作者、研究者及小团队。

weixin_29052717的博客 513

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

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

Net_bad的博客 1057

squidpy 教程 2:利用 Scanpy 和 Squidpy 进行空间数据的可视化分析

本教程详细介绍了如何利用Squidpy和Scanpy对空间转录组数据进行可视化分析。通过将Scanpy处理得到的聚类结果映射回原始组织图像,并结合基因表达与空间邻域信息,帮助研究者直观揭示细胞类型分布、基因表达模式及空间相互作用,从而深入挖掘空间组学数据的生物学意义。

weixin_29081703的博客 446

Qwen3.6-27B本地部署实战:LM Studio配置、硬件门槛与避坑指南

大语言模型本地部署是当前AI工程落地的核心能力之一,其本质是将高参数量模型(如27B级)在受限硬件环境下实现低延迟、高稳定推理。关键技术原理涵盖量化压缩(如GGUF格式与q4_k_m精度权衡)、GPU显存分配策略(KV Cache管理与Offloading机制)、以及运行时环境兼容性(CUDA驱动、llama.cpp后端版本)。该能力直接决定私有化AI应用的技术可行性与成本边界,广泛应用于企业知识库构建、代码辅助、长文档分析等对数据主权和响应确定性要求高的场景。本文聚焦Qwen3.6-27B这一典型27B模

weixin_33272631的博客 467

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

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

长春高老师编程 1254

Dify学习-19-EXCEL数据如何建立知识库+知识库的学习ING

Args:"""定义类,继承自类文档字符串说明这个类用于加载Excel文件这个类提供了从Excel文件(.xls和.xlsx)中提取数据并转换为文档列表的功能。处理两种Excel格式保留超链接信息跳过空行将每行数据转换为键值对格式的文档在元数据中保留源文件信息对于.xlsx文件使用openpyxl处理,可以获取更多单元格信息(如超链接);对于.xls文件则使用pandas的xlrd引擎处理。

Claire的博客 3434

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

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

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

手把手教你学Simulink--双足机器人分数阶PID控制仿真

分数阶PID(Fractional-order PID, FOPID)控制是一种先进的控制策略,它扩展了传统的整数阶PID控制器的概念。FOPID控制器允许积分和微分项的阶次不是严格的整数,而是可以是任意实数,这为系统提供了更多的设计自由度,并可能带来更好的性能。在双足机器人控制中,分数阶PID控制可以用于改善机器人的平衡控制、轨迹跟踪等任务的性能。下面我们将详细介绍如何使用Simulink进行基于分数阶PID控制方法的双足机器人仿真研究。

MHD0815的博客 880

实验十一 ——————二层交换基础

实验内容实验网络拓扑图如上所示SW1以及SW2都创建VLAN10和VLAN20,按照上图所示,将接口添加到特定的VLAN;测试PC之间的连通性,要求相同VLAN内的PC能够相互通信要求设置两台交换机名称以及进行特权模式的密码,并允许通过Telnet方式管理交换机实验目的了解二层交换机工作原理掌握交换机基本配置命令理解VLAN的概念,掌握VLAN的配置理解trunk的概念,掌握trunk的配置实验步...

Fly_鹏程万里 1489

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

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

全栈工程师Linda的博客 593

小程序真机调试蓝牙可以使用,线上发布版本蓝牙无法使用

小程序提示请打开蓝牙,微信小程序蓝牙无法连接,小程序真机调试蓝牙可以使用,线上版本蓝牙无法使用,测试环境蓝牙正常,开发环境蓝牙正常,发布后蓝牙无法使用

renkai721的专栏 826

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

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

长春高老师编程 720

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上海市计算机学会竞赛平台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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上海市计算机学会竞赛平台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、付费专栏及课程。

余额充值