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

这篇具有很好参考价值的文章主要介绍了上海市计算机学会竞赛平台(iai.sh.cn)2023一月月赛(丙组)解题报告。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验日志

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

题目描述

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

输入格式

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

输出格式

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

数据范围

对于 30 % 30\% 30% 的数据, 1 ≤ n ≤ 100 1\leq n\leq 100 1n100
对于 60 % 60\% 60% 的数据, 1 ≤ n ≤ 1 0 4 1\leq n\leq 10^4 1n104
对于 100%100% 的数据, 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1n105
1 ≤ m , a i ≤ 1 0 4 1\leq m,a_i\leq 10^4 1m,ai104

样例数据

输入:

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 将被变成 DB 变成 E 等等。若要加密最后三个字母,则需要折回到前三个字母,比如 x 变 a,y变 bzc。例如以下明TheQuickBrownFoxJumpsOverTheLazyDog将被加密成WkhTxlfnEurzqIraMxpsvRyhuWkhOdcbGrj给定一段只由拉丁字母组成的字符序列,请将它用凯撒加密成密文。

输入格式

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

输出格式

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

数据范围

设输入的字符数量为 n,则保证 1 ≤ n ≤ 100 , 000 1\leq n\leq 100,000 1n100,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 , 000 1\leq n\leq 50,000 1n50,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 , . . . , n 1,2,...,n 1,2,...,n。但小爱发现,目前有p个灯笼不亮了,很是影响美观。
请你帮助小爱计算,最少修复多少个灯笼,便可使道路上有连续m个亮着的大红灯笼?

输入格式

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

输出格式

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

数据范围

对于 30 % 30\% 30% 的数据, 1 ≤ m , p ≤ n ≤ 100 1 \leq m,p \leq n \leq 100 1m,pn100
对于 60 % 60\% 60% 的数据, 1 ≤ m , p ≤ n ≤ 1 0 4 1\leq m,p \leq n \leq 10^4 1m,pn104
对于 100 % 100\% 100% 的数据, 1 ≤ m , p ≤ n ≤ 1 0 5 1 \leq m,p \leq n \leq 10^5 1m,pn105

样例数据

输入:

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 ≤ 10 1 \leq n,m \leq 10 1n,m10
对于 60 % 60\% 60%的数据, 1 ≤ n , m ≤ 500 1 \leq n,m \leq 500 1n,m500
对于 100 % 100\% 100% 的数据, 1 ≤ n , m ≤ 5000 1 \leq n,m\leq 5000 1n,m5000

输入:

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 = 1 f(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(np)= f(n1,p)+(m1)×fn1,p1)f(n1,p)m0(p=0)(p>0)}(p>0)(p=0)n=1

注:记得加记忆化,开long long,MOD文章来源地址https://www.toymoban.com/news/detail-603968.html

代码展示

#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;
}

到了这里,关于上海市计算机学会竞赛平台(iai.sh.cn)2023一月月赛(丙组)解题报告的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 上海市第十人民医院胃肠外科沈通一:以菌为药,非药而愈

    6月29日,2023主动健康与临床营养高峰论坛在西安国际会展中心盛大召开,会议汇集了来自国内医学与营养领域杰出的专家学者,交流分享行业的先进理念和研究成果,为主动营养业界与学界能量交换搭建了新接口,以凝聚学术力量,共建研发引擎。 峰会现场,来自同济大学

    2024年02月12日
    浏览(44)
  • 【2022研电赛】商业计划书赛道上海市一等奖:基于多目标排序预测控制的SL-qZSI光伏储能系统

    本文为2022年第十七届中国研究生电子设计竞赛商业计划赛道上海赛区一等奖作品兼全国三等奖分享,参加极术社区的【有奖活动】分享2022研电赛作品扩大影响力,更有丰富电子礼品等你来领! 参赛单位:上海理工大学 参赛队伍:科研创新队 指导老师:罗韡 参赛队员:吕哲

    2024年02月09日
    浏览(61)
  • 计算机竞赛 交通目标检测-行人车辆检测流量计数 - 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 交通目标检测-行人车辆检测流量计数 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://

    2024年02月12日
    浏览(53)
  • 2023 年中国大学生计算机设计大赛上海决赛区正式开启!

    中国大学生计算机设计大赛(下文简称“大赛”)是由教育部认证、我国高校面向本科生最早的赛事之一,自 2008 年开赛起,至今已是第十六届。大赛属于全国普通高校大学生竞赛排行榜榜单赛事,由教育部高校与计算机相关的教指委等组织,或独立或联合主办,旨在提升大

    2024年02月16日
    浏览(44)
  • 计算机竞赛 深度学习乳腺癌分类

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习乳腺癌分类 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgradu

    2024年02月07日
    浏览(46)
  • 有哪些值得推荐的计算机专业的竞赛?

    这篇文章想必会得罪不少竞赛举办方,但事实就是,除了ACM以外的其它竞赛,作用并没有想象的那么大。 如果你想通过一场竞赛奖牌就能找到工作?恐怕只有ACM才有这个实力。 其它竞赛,都只起到锦上添花的作用,只有竞赛奖牌没有实际能力,想找份工作恐怕也并不是那么

    2024年02月03日
    浏览(61)
  • 基于机器视觉的车道线检测 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的视频多目标跟踪实现 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 理解车道检测的概念 那么什么是车道检测?以下是百度百科对车道的定义:

    2024年02月08日
    浏览(55)
  • 计算机竞赛 车道线检测(自动驾驶 机器视觉)

    无人驾驶技术是机器学习为主的一门前沿领域,在无人驾驶领域中机器学习的各种算法随处可见,今天学长给大家介绍无人驾驶技术中的车道线检测。 在无人驾驶领域每一个任务都是相当复杂,看上去无从下手。那么面对这样极其复杂问题,我们解决问题方式从先尝试简化问

    2024年02月08日
    浏览(72)
  • 计算机竞赛 目标检测-行人车辆检测流量计数

    🔥 优质竞赛项目系列,今天要分享的是 行人车辆目标检测计数系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 目标检测,粗略来说就是:输入图片/视频,经过处理,得到:目标的位置信息(比如

    2024年02月07日
    浏览(47)
  • 计算机竞赛 基于深度学习的人脸表情识别

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 面部表情识别技术源于1971年心理学家Ekman和Friesen的一项研究,他们提出人类主要有

    2024年02月10日
    浏览(190)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包