计算机学院第五次ACM周赛题解

news2024/11/20 1:48:49

目录

HF的智能小车车

Do you like Van game?

好姐姐的三角形

帮帮小陈

卷点

签个到就下班

现在是摸鱼时间

现在是摸鱼时间 PLUS


HF的智能小车车

签到题目,

#include<iostream>

using namespace std;

int main()
{
	string arr;
	cin>>arr;
	if(arr=="R") cout<<"L";
	else if(arr=="L") cout<<"R"<<endl;
	else if(arr=="U") cout<<"D"<<endl;
	else if(arr=="D") cout<<"U"<<endl;
 } 

Do you like Van game?

这道题目是个小模拟题目,模拟范围并不大,所以我们可以直接进行模拟。

首先我们发现无非就是三种情况,最开始在1,2,3三个位置,我们可以直接开个变量假设就在初始的三个位置,然后对于每一次的交换,我们都把位置改变,接下来猜一下位置对不对,对了就把对应的答案加一;

代码如下:

#include<iostream>

using namespace std;

int main()
{
	int n;
	cin>>n;
	int a=1,b=2,c=3;//假设abc为初始在123位置 
	int ans1=0,ans2=0,ans3=0;// 记录猜对的次数 
	while(n--)
	{
		int x,y,z;
		cin>>x>>y>>z;
		if(x==a) a=y;
		else if(y==a) a=x;
		
		if(x==b) b=y;
		else if(y==b) b=x;
		
		if(x==c) c=y;
		else if(y==c) c=x;
		//对于每一次交换,如果他交换了,就把他的位置改变 
		if(a==z) ans1++;
		if(b==z) ans2++;
		if(c==z) ans3++;
		//三种初始位置分别计数 
	}
	int ans=max(ans1,ans2);
	ans=max(ans,ans3);//求出最大猜对次数即可,不需要猜位置 
	cout<<ans<<endl;
}

好姐姐的三角形

也是很经典的一道模拟题目,输出经典的三角形,主要需要发现的是外面的空格个数和内层的空格个数,一定要思路清晰,不然空格个数判断错误的话很难改正。

#include<iostream>

using namespace std;

int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		int a;
		char k;
		cin>>a>>k;
		int p=1;
		for(int i=a-1;i>=1;i--)//外层空格数目是逐渐减少,从a-1个开始减少 
		{
			for(int j=1;j<=i;j++) cout<<" ";//这里是外层空格 
			cout<<k;
			if(i!=a-1)//注意,第一层中间没有空格 
			{
				for(int j=1;j<=p;j++) cout<<" ";//如果中间需要空格,进行空格判断,增长规律是p+=2 
				p+=2;
				cout<<k;
			} 
			cout<<endl;
		}
		for(int i=1;i<=2*a-1;i++) cout<<k;//最后一层全是 
		cout<<endl;
		cout<<endl;
	}
 } 

帮帮小陈

目前不会写,先放着;

三重循环别想,绝对超时,二分可以优化,但是没想到怎么做;

卷点

这道题目我们需要分类讨论,不难发现,有几个特殊点位需要我们注意

 当位于十字和斜线上的时候,我们会发现只有四种情况,可以通过对称实现,而当位于中心点四种情况会重叠,只有一种情况成立,其他情况我们发现都会有八种对称情况,那么根据分析,我们就可以把答案写出来了;

#include<iostream>
#include<set>
using namespace std;
typedef long long LL;
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		set<LL> se;//这里使用到的是c++STL中的set容器,具体放入set的元素不重复(自动去重) 
		LL a,b,c,d;
		cin>>a>>b>>c>>d;
		se.insert(a);
		se.insert(b);
		se.insert(c);
		se.insert(d);//我们需要特判,这里的面积比其实是高之比 
		
		if(a+b==c+d||a+c==b+d||a+d==b+c)//如果发现有两条边相加相等的情况,说明内部有卷点,如果有卷点,则绝对 
		{                               //存在有两条边相加等于两条边相加,这样三角形高才能和正方形对应 
			if(se.size()==4) cout<<"8"<<endl;//如果发现四条高各不相同,说明不在十字和X上 
			else if(se.size()==2||se.size()==3) cout<<"4"<<endl;//2说明在X上,3说明是在十字上 
			else if(se.size()==1) cout<<"1"<<endl;//四条高相等,只能在中点 
		}
		else cout<<"0"<<endl;//否则高度相加不存在相等的情况肯定无解 
	}
}

/*
补充set:S
<int> 小括号内定义你set可以放入什么类型的数据 
S.insert(A)函数表示把A加入容器。 
s.size()计算s的大小,元素不重复 
s.find(A)!=-1,在set里查找A,不到返回-1 
set的好处就是自动去重,保证每个元素只会出现一次 
*/ 

签个到就下班

简单题目,签到题

#include<iostream>

using namespace std;

int main()
{
	char a,b;
	string arr;
	cin>>a>>b>>arr;
	int ans=0;
	for(int i=0;i<arr.size();i++)
	{
		if(arr[i]>=a&&arr[i]<=b) cout<<arr[i]<<' ';
	}
}

现在是摸鱼时间

这道题目是一道很搞人的题目。

我们先对式子进行化简,我们可以发现化简到最后得到j-i=arr[j]-arr[i];说明我们存入数组后,两个位置的下表之差等于他们数组存的数字的差;

那么同学很快就想到了解决方案,我直接暴力循环,只要数组内两个数相减等于下标相减,答案就可以加一,事实上想法没错,但是数据范围在1e6。你是过不去的,会超时,那么我们再想一想,上式还可以化简:j-arr[j]=i-arr[i]也就是说,现在只需要保证下标和数组的差值相等,那么就可以记作一次答案相等;

基于这个思想,我们就可以写出下面这个代码:

#include<iostream>
#include<cstring>
#include<map>
using namespace std;

typedef long long LL;
map<int,int> mp;//这里使用到了map 
int arr[1000010];

int main()
{
    int n;
	LL cnt=0;
	cin>>n;
    
	for(int i=1;i<=n;i++) cin>>arr[i],mp[i-arr[i]]++;//直接计算差值 ,把差值加入到map中 
	for(auto &it:mp)//通过对map差值的遍历,如果出现5次就是10个相等,6个就是15个相等,规律是n个就是1+2+...+n-1 
	{
		int k=it.second;
		for(int i=1;i<k;i++) cnt+=i;//加入我们的答案 
	}
	cout<<cnt<<endl;
	//如果大家不会用map,可以再开一个数组,用这个数组记录差值,差值大小在-999-999之间,数组没负数下标
	//我们可以统一加一个1000,这样范围就在1-1999之间就可以存储,反正我们只要差值的出现次数,不管差值是
	//由谁减谁得到的 
}
/*
map类似字典,根据前一个东西可以定义后一个东西,后一个可以是int类型,也可以是string,甚至可以进行操作;
用法就是直接定义<A,B> A表示字典的第一个关键字,B是字典第二关键字,第二关键字可以进行操作;
具体详细用法请大家去csdn查看; 
*/ 

现在是摸鱼时间 PLUS

这道题目实际是找两个互质的数字,他们的下标加起来最大是多少,记得不能是1,因为1不是质数不能参与互质运算。

所以很多同学直接暴力,企图循环出1e6的答案,肯定错误,我们发现我们的数据大小在1-1000,但是下标在1-1e6,我们可以想个办法把下标对应到数据上,因为只要数据互质,下标我们只取最大的两个即可,所以我们首先对应下标;

之后对数据进行互质判断,如果互质,直接相加即可,因为我们的第一步已经把下标最大存入这个数,所以直接相加一定是下标最大的相加,这样可以把原本1e6*1e6的算法变为1e3*1e3,可以过掉

#include<iostream>
#include<cstring>
using namespace std;

typedef long long LL;
int arr[1010];

int gcd(int a, int b)
{
    return b>0 ? gcd(b, a % b) : a;
}//判断互质函数,大家也可以写其他判断方法,这个是最简判断 
int main()
{
    int n;
	LL cnt=0;
	cin>>n;
    
	for(int i=1;i<=n;i++) 
	{
		int a;
		cin>>a;
		arr[a]=max(arr[a],i);//将下标对应到数据,且只要最大的 
	}
	int ans=0;
//	for(int i=1;i<=10;i++) cout<<arr[i]<<' ';
	
	for(int i=1;i<=1000;i++)
	{
		for(int j=i;j<=1000;j++)
		{
			if(i==j)//如果天数相同只算1次 
			{
				ans=max(ans,arr[i]);
				if(i==1)//特判样例1 1,因为1 1不是指质数不能进行下面比较,但是1 1的确算作两次摸鱼,所以要特判 
				ans=max(ans,arr[i]*2);
			}
			else if(gcd(i,j)==1&&i!=1&&j!=1)//如果互质,且没有1,就进行摸鱼答案判断 
			{
				ans=max(ans,arr[i]+arr[j]);
			} 
		}
	}
	cout<<ans<<endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学生会信息管理系统

1、项目介绍 学生会信息管理系统拥有两种角色&#xff1a;学生和管理员 学生&#xff1a;查看活动和新闻信息、发布活动、登录注册 管理员&#xff1a;公共新闻管理、用户管理、活动审核等 2、项目技术 后端框架&#xff1a; Servlet、mvc模式 前端技术&#xff1a;jsp、c…

Linux(centos)安装Jenkins

Jenkins 是一个开源的, 基于Java的自动服务器&#xff0c;提供了一种建立持续集成和持续交付(CI/CD)流水线的简单方法 。 持续集成 (CI)是DevOps实践中&#xff0c;团队成员定期将他们的代码更改提交到版本仓库, 然后运行自动化的构建和测试. 持续交付(CD)是自动构建、测试和部…

【附源码】计算机毕业设计SSM物业管理系统设计

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

第九章 Ambari二次开发之自定义Flink服务 -- 自定义quiklinks链接

1、自定义quiklink链接功能概述 主要功能&#xff1a;用来配置第三方服务界面链接&#xff0c;如Yarn的管理界面。 服务可以通过在metainfo中加入一串quicklink的引用&#xff08;一串预定义的JSON字符串&#xff09;即可。ambari server能解析json文件并将其提供给UI&#xff…

CSS 2 CSS 选择器 - 2 2.5 属性选择器

CSS 文章目录CSS2 CSS 选择器 - 22.5 属性选择器2.5.1 CSS [attribute] 选择器2.5.2 CSS [attribute"value"] 选择器2.5.3 CSS [attribute~"value"] 选择器2.5.4 CSS [attribute|"value"] 选择器2.5.5 CSS [attribute^"value"] 选择器…

渠道数字化有什么好处?如何实现渠道数字化营销?

数字化转型是企业如今谋求商业升维的一种主要方式&#xff0c;即利用数字化技术和能力来赋能企业经营思维数字化、商业模式创新化&#xff0c;达到业务重构升级、实现业务的转型、创新&#xff0c;增长的目的。对于企业而言&#xff0c;数字化其实正是升维企业业务、企业流程及…

【电子通识】为什么高速信号传输要用差分

早期很多设备要接到计算机上,需要通过一些线径粗连接器笨重的总线。如GPIB接口(通用接口总线)是曾经大多台式仪器与计算机相连接的方式。 在文章:【蓝牙专题】蓝牙测试工具及性能标准 中,电脑就是通过USB转GPIB接口与MT8852进行连接,对低功耗蓝牙模块进行测试。 …

稳压二极管有什么特性?稳压二极管的特点

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

Java泛型——帮助你更好的读懂源码<dog>

泛型 泛型就相当于集合的标签&#xff0c;我们在使用集合<>的时候&#xff0c;就是在使用泛型 要知道的是在jdk1.5以前我们只能把集合中的元素设计为Object&#xff0c;之后引入了泛型的概念来解决&#xff0c;我们把元素的类型设计成一个参数&#xff0c;这个类型参数…

【PyTorch深度学习项目实战100例】—— Pytorch时间序列电力数据多输出预测 | 第70例

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…

1024 你学算法了吗?

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

JUC - 多线程之 单例模式(八)

单例模式&#xff08;Singleton Pattern&#xff09;是一种非常简单的设计模式之一&#xff0c;当我们使用的对象要在全局唯一时就需要用到该模式&#xff0c;以保证对象的唯一性。除此之外&#xff0c;还能避免反复的实例化对象&#xff0c;减少内存开销 单例类提供了一种访问…

踩坑记录——USB键盘睡眠唤醒

踩坑记录——USB键盘睡眠唤醒 目录踩坑记录——USB键盘睡眠唤醒前言1 USB远程睡眠唤醒要注意的几个点2 MCU唤醒之后引起USB异常的几个点结束语前言 前段时间我用一个国产MCU实现了雷蛇键盘的效果&#xff0c;按键支持十键无冲&#xff0c;RGB灯支持单控任意一个灯任意一种颜色…

SpringAMQP (RabbitMQ五种模式 消息转换器)

一、简化Hello World模型实现步骤演示 代码步骤演示如下所示&#xff1a; 消息提供者publisher代码简化&#xff1a; 消息消费者consumer代码简化&#xff1a; 二、Work Queue 工作队列模型 消息提供者代码如下所示&#xff1a; 消息消费者代码如下所示&#xff1a; 消息…

SpringCloudAlibaba【六】微服务架构下的秒杀案例

背景 分布式微服务中的秒杀是怎么实现的呢&#xff1f;接着看下去吧 我们实现一个秒杀微服务&#xff0c;流程逻辑如下 项目搭建 MySQL create database if not exists demo;use demo;drop table if exists skill_goods;create table if not exists skill_goods (id bigint…

1024程序员节|【MySQL从入门到精通】【高级篇】(二十七)外连接和内连接如何进行查询优化呢?join的原理了解一波

您好&#xff0c;我是码农飞哥&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通 ❤️ 2.网上优质的Python题库很少…

[面试宝典] Linux常见命令及面试题

前言&#xff1a; &#x1f604;作者简介&#xff1a;小曾同学.com,小伙伴们也可以叫我小曾&#xff0c;一个致力于测试开发的博主⛽️ 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;…

C语言 - 你一定能看懂的扫雷万字详解(加入了递归展开和手动标雷的功能)

C语言之扫雷详解&#xff08;包含递归展开和手动标雷功能&#xff0c;非常强大&#xff01;&#xff09; 文章目录一.写在前面二.效果展示三.整体逻辑四.详解1.进入主函数&#xff0c;打印菜单&#xff0c;玩家作出选择2.定义棋盘的数组并进行赋值3.棋盘的展示4.随机布雷5.开始…

前端开发入门--html--Flask

快速开发网站 pip install flaskfrom flask import Flaskapp Flask(__name__)# 创建了网址 /show/info 和 函数index 的对应关系 # 以后用户在浏览器上访问 /show/info&#xff0c;网站自动执行 index app.route("/show/info") def index():return "中国联通&…

TPH-YOLOv5 | 基于Transformer的YOLOv5小目标检测器 | 四头加注意力

论文地址&#xff1a;https://arxiv.org/pdf/2108.11539.pdf 项目地址&#xff1a;https://github.com/cv516Buaa/tph-yolov5 在无人机捕获的场景中进行对象检测是最近的一项热门任务。由于无人机总是在不同的高度航行&#xff0c;物体尺度变化剧烈&#xff0c;给网络优化带来…