Codeforces Round 950 (Div. 3)(A~E题解)

这场比赛我自己打的是真的垃圾,也是侥幸被拿下了,第三题当时没想清楚,要不然还能止损一下,惜败惜败

话不多说,现在来看A~E题的题解

A. Problem Generator

题解:这题水题一个,我们来考虑本题的做法,题目说 给我n个问题,然后有m轮比赛,每轮比赛都需要A~G道题,那么我们之间去用数组去统计每道题的出现的次数即可,然后对于对于每个问题我们需要判断其出现次数是否小于m,若小于m则还需要出对应的m-vis[i]道题

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,m;
char s[55];
int vis[10];//用来统计每个问题都出现了多少次
signed main()
{
	cin>>t;
	while(t--)
	{
		memset(vis,0,sizeof(vis));
		cin>>n>>m;
		for(int i=1;i<=n;i++)
		{
			cin>>s[i];
			vis[s[i]-'A'+1]++;
		}
		int cnt=0;
		for(int i=1;i<=7;i++)
		{
			
			if(vis[i]<m)
			cnt+=m-vis[i];
		}
		cout<<cnt<<"\n";
	}
	return 0;
}

B. Choosing Cubes 

题解:题目意思是我们有n个小立方体,每个立方体有自己的大小,然后我钟情于索引为f的立方体,然后,我们对这个数组进行排序(从大到小),然后那走前n个,判断我钟情的立方体是否会被拿走,如果一定被拿走就输出YES,如果一定不被拿走就输出NO,如果有可能被拿走,也有可能不被拿走就输出MAYBE

我们对立方体进行排序,设立一个flag初始值为0,然后遍历遍历数组索引从1到k然后去看是否里面有和钟情的立方体大小一样的,如果有则flag=1;如果没有那就说明一定抽不到我喜欢的立方体,输出NO即可

然后我们再遍历一遍k+!到n,如果还有立方体和钟情的立方体一样大小,且flag=1,那么就说明有可能被选走,也有可能没被选走,就是MAYBE,如果没有,就说明只有一个所有和钟情立方体一样大小的都在前面,一定会被选走,输出YES

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,f,k;
int a[105];
bool cmp(int a,int b)
{
	return a>b;
}
signed main()
{
	cin>>t;
	while(t--)
	{
		cin>>n>>f>>k;
		for(int i=1;i<=n;i++)
		cin>>a[i];
		int flag=a[f];//记录喜欢的立方体
		sort(a+1,a+n+1,cmp);
		int cnt=0;
	    for(int i=1;i<=k;i++)
	    {
	    	if(a[i]==flag)
	    	cnt=1;
		}
		for(int i=k+1;i<=n;i++)
		if(a[i]==flag&&cnt==1)
		cnt=2;
		if(cnt==1)
		{
			cout<<"YES"<<"\n";
		}
		else if(cnt==0)
		{
			cout<<"NO"<<"\n";
		}
		else
		{
			cout<<"MAYBE"<<"\n";
		}
	}
	return 0;
}

 C. Sofia and the Lost Operations

 题解:这题就是说一开始给了三个数组,a数组,b数组,d数组,我们可以将a数组的任意值变成d数组里面的,但是d数组是按顺序变的,第一个变得就是d[1],第二个就是d[2]

然后问我们,a数组能不能变成b数组,这题一开始很快就想出来了,但是犯蠢了,考虑错范围了,等下我在下面思路仔细讲解

首先我们做这题的思路就是想着看d数组能不能包含所有a变b数组的值,然后,如果全部包含,那就说明可以,如果不完全包含,就说明不可以,但是这样真的对吗

显然是不对的,因为对于最后一个数据来看,我们需要让d数组的最后一位是b数组里面的一个子元素(当时我这个小丑,想的是d数组的最后一位必须是要变换的b数组的元素,直接把范围卡小了,所以错了)

所以这题的思路就是先判断d数组的最后一位是不是b数组里面的子元素,如果不是那么一定就是错的,如果是,再判断m次从操作能否让所有的需要变的a数组元素都能变成b数组元素

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n;
int a[200005];
int b[200005];
int m;
set<int> st;
map<int , int> mp;
vector<int> vec;
signed main()
{
	cin>>t;
	while(t--)
	{
		st.clear();
		mp.clear();
		vec.clear();
		cin>>n;
		for(int i=0;i<n;i++)
		cin>>a[i];
		for(int i=0;i<n;i++)
		{
			cin>>b[i];
			st.insert(b[i]);
			if(b[i]!=a[i])
			{
				mp[b[i]]++;
			}
		}
		cin>>m;
		int num;
		for(int i=0;i<m;i++)
		{
			cin>>num;
			vec.insert(vec.begin() + i, num);
		}
	
		if(st.count(vec[vec.size()-1]))
		{
			for(auto it : vec)
			{
				mp[it]--;
			}
			int flag=1;
			for(auto it : mp)
			{
				if(it.second>0)
				flag=0;
			}
			if(flag==1)
			cout<<"YES"<<"\n";
			else
			cout<<"NO"<<"\n";
		}
		else
		{
			cout<<"NO"<<"\n";
		}
	}
	return 0;
}

 D. GCD-sequence

 

题解:将删除前的最大公因数序列求出来,可以发现若要满足题意,必然需要找到gcd序列中最后一个递减的位置,并且删除与之相关的数(只有三个数与之相关)。然后判断删除后的序列能否形成非递减即可。 

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n;
int a[200005];
int b[200005];
int sum[200005];
int ans[200005];


int gcd(int a,int b)
{
    if(b==0)
    {
        return a;
    }
    return gcd(b,a%b);
}

bool solve()
{
	for(int i=1;i<=n-2;i++)
	{
		ans[i]=gcd(sum[i],sum[i+1]);
		if(ans[i]<ans[i-1])
		return false;
	}
	return true;
}


void titi()
{
	    cin>>n;
		for(int i=1;i<=n;i++)
		cin>>a[i];
		for(int i=1;i<=n-1;i++)
		{
			b[i]=gcd(a[i],a[i+1]);
			if(b[i-1]>b[i])
			{
				for(int j=1;j<=i-2;j++)
				{
					sum[j]=a[j];
				}
				for(int j=i;j<=n;j++)
				{
					sum[j-1]=a[j];
				}
				
				if(solve())
				{
					return cout<<"YES"<<"\n",void();
				}
				
				for(int j=1;j<=i-1;j++)
				{
					sum[j]=a[j];
				}
				for(int j=i+1;j<=n;j++)
				{
					sum[j-1]=a[j];
				}
				
			    if(solve())
				{
					return cout<<"YES"<<"\n",void();
				}
				
				for(int j=1;j<=i;j++)
				{
					sum[j]=a[j];
				}
				for(int j=i+2;j<=n;j++)
				{
					sum[j-1]=a[j];
				}
				
			    if(solve())
				{
					return cout<<"YES"<<"\n",void();
				}
				
				return cout<<"NO"<<"\n",void();
			}
		}
	puts("YES");
}

signed main()
{
	cin>>t;
	while(t--)
	{
		titi();
	}
	return 0;
}

E. Permutation of Rows and Columns 

 

题解,这题就是说问你两个矩阵,能否让a矩阵通过若干次行变换和列变换,使其变成b矩阵,这题思路也很简单(但是比赛卡在C了,至今忘不了,我对那个d数组最后一个范围的错误,悲哉

思路就是既然就是单纯的行变换和列变化,那我,只要a矩阵的每一行的和在b矩阵能全部出现就行 ,列同理,

然后

#include <bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,m;

signed main()
{
	cin>>t;
	while(t--)
	{
		cin>>n>>m;
		int a[n+5][m+5];
		int b[n+5][m+5];
		map<set<int>,int> mph;
		map<set<int>,int> mpl;
		set<int>st;
		
		mph.clear();
		mpl.clear();
		st.clear();
		
		int flag=1;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				cin>>a[i][j];
			}
		}
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				cin>>b[i][j];
			}
		}
		
		
		for(int i=1;i<=n;i++)
		{
			st.clear();
			for(int j=1;j<=m;j++)
			{
				st.insert(a[i][j]);
			}
			mph[st]++;
		}
		for(int i=1;i<=m;i++)
		{
			st.clear();
			for(int j=1;j<=n;j++)
			{
				st.insert(a[j][i]);
			}
			mpl[st]++;
		}
		
		
		for(int i=1;i<=n;i++)
		{
			st.clear();
			for(int j=1;j<=m;j++)
			{
				st.insert(b[i][j]);
			}
			if(mph.count(st)==0)
			{
				flag=0;
			}
		}
		for(int i=1;i<=m;i++)
		{
			st.clear();
			for(int j=1;j<=n;j++)
			{
				st.insert(b[j][i]);
			}
			if(mpl.count(st)==0)
			{
				flag=0;
			}
		}
		
		if(flag==1)
		cout<<"YES"<<"\n";
		else
		cout<<"NO"<<"\n";
	}
	return 0;
} 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学会 YOLOv8 直接上手 YOLOv10 | YOLOv8 YOLOv10 模型结构 Yaml 文件对比

先来对比下 模型 yaml 文件&#xff0c; YOLOv8 的 5 个模型尺寸是写到一起的&#xff0c;也就是说&#xff0c;YOLOv8 的 5个尺寸之间就是宽度和深度等比例缩放&#xff1b; YOLOv10 的 6 个模型尺寸是分开写的&#xff0c;10 并不是简单的宽度和深度等比例缩放&#xff0c;…

正邦科技七:pycharm的使用

Pycharm的使用 1&#xff1a;下载python解释器&#xff1a;https://www.python.org/downloads/windows/ 2&#xff1a;下载Pycharm社区办&#xff1a;去官网下载&#xff08;不需要跟Java一样配置jdk这种环境&#xff09; 需要注意一点如果是别人发的包解压之后不能直接用&…

C++期末复习

目录 1.基本函数 2.浅拷贝和深拷贝 3.初始化列表 4.const关键字的使用 5.静态成员变量和成员函数 6.C对象模型 7.友元 8.自动类型转换 9.继承 1.基本函数 &#xff08;1&#xff09;构造函数&#xff0c;这个需要注意的就是我们如果使用类名加括号&#xff0c;括号里面…

Spring Cloud系列——使用Sentinel进行微服务保护

文章目录 一、引言1. 雪崩问题的产生原因2. 解决雪崩问题的思路 二、微服务保护1. 服务保护方案1.1 请求限流1.2 线程隔离1.3 服务熔断 2. Sentinel2.1 安装2.2 微服务整合2.2.1 请求限流2.2.2 线程隔离①OpenFeign整合Sentinel②配置线程隔离 2.2.3 服务熔断①编写降级逻辑②配…

实验室类管理平台LIMS系统的ui设计实例

实验室类管理平台LIMS系统的ui设计实例

基于STM32的位置速度环PID控制伺服电机转动位置及程序说明

PID控制原理 PID控制原理是一种广泛应用于工业自动化和其他领域的控制算法。PID控制器的名字来源于其三个主要组成部分&#xff1a;比例&#xff08;Proportional&#xff09;、积分&#xff08;Integral&#xff09;和微分&#xff08;Derivative&#xff09;。PID控制器实现…

一种一维时间序列信号的广义小波变换方法(MATLAB)

地震波在含油气介质中传播时&#xff0c;其高频分量往往比低频分量衰减更快。据此&#xff0c;地震波的高频分量和低频分量之间的差异值可以用于分析含油气衰减位置&#xff0c;从而间接指示出含油气储层。对于时频域中的地震波衰减分析&#xff0c;一般地&#xff0c;利用地震…

WebService的配置

如果提示”对操作“XXX”的回复消息正文进行反序列化时出错 那么多半是因为字符长度不够 调整参数 maxStringContentLength"10485760" maxReceivedMessageSize"2147483647" maxBufferSize"2147483647" 示例&#xff1a; messageVersion&qu…

Stable diffusion采样器详解

在我们使用SD web UI的过程中&#xff0c;有很多采样器可以选择&#xff0c;那么什么是采样器&#xff1f;它们是如何工作的&#xff1f;它们之间有什么区别&#xff1f;你应该使用哪一个&#xff1f;这篇文章将会给你想要的答案。 什么是采样&#xff1f; Stable Diffusion模…

MaaS玩家:希望AI大模型价格战再狠一点

明知产能严重过剩的新能源企业却还在重金扩产&#xff0c;多半因为他们花的不是自己的钱&#xff1b;明知极度烧钱的AI大模型却开始打价格战&#xff0c;多半因为他们并不靠这东西挣钱。 所有投资人必备的一项技能&#xff0c;就是中观行业景气度及商业模式对比。很明显&#…

大模型时代的具身智能系列专题(八)

standford Chelsea Finn团队 Chelsea Finn是Stanford计算机科学与电气工程系的助理教授。她的实验室IRIS通过大规模的机器人互动研究智能&#xff0c;并与SAIL&#xff08;斯坦福人工智能实验室&#xff09;和ML Group&#xff08;机器学习团队&#xff09;有合作关系。他还在…

Java邮件发送的基本流程是什么?如何实现?

Java邮件发送的SMTP服务器如何配置&#xff1f;怎么配置发信&#xff1f; Java邮件发送是在Java应用程序中通过邮件协议&#xff08;如SMTP&#xff09;发送电子邮件的过程。它是许多企业级应用程序中常见的功能&#xff0c;用于向用户发送通知、确认邮件等。AokSend将介绍Jav…

浅谈配置元件之随机变量

浅谈配置元件之随机变量 1.概述 为了增强测试的真实性和多样性&#xff0c;JMeter 提供了多种配置元件来生成动态数据&#xff0c;其中“随机变量”(Random Variable) 就是一种常用的配置元件&#xff0c;用于生成随机数值、字符串等&#xff0c;以模拟不同用户请求中的变化参…

【Mac】Downie 4 for Mac(视频download工具)兼容14系统软件介绍及安装教程

前言 Downie 每周都会更新一个版本适配视频网站&#xff0c;如果遇到视频download不了的情况&#xff0c;请搜索最新版本https://mac.shuiche.cc/search/downie。 注意&#xff1a;Downie Mac特别版不能升级&#xff0c;在设置中找到更新一列&#xff0c;把自动更新和自动downl…

蓝牙网关和WiFi网关的对比

蓝牙网关和WiFi网关都是无线通信技术中的重要组件&#xff0c;它们各自具有不同的特点和应用场景。以下是蓝牙网关和WiFi网关的一些对比&#xff1a; 蓝牙网关 作用&#xff1a; - 蓝牙网关可以无线连接各种设备&#xff0c;如门锁、灯、电视等&#xff0c;并能与购物者、旅…

java海滨学院班级回忆录源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的海滨学院班级回忆录。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 海滨学院班级回忆录的…

Struts2 系列漏洞 - S2-001

一、前言 Struts2 是较早出现实现 MVC 思想的 java 框架。struts2 在 jsp 文件中使用 ognl 表达式来取出值栈中的数据。 struts 标签与 ognl 表达式的关系类似于 jstl 标签与 el 表达式的关系。[故在 jsp 文件中需引入 struts 标签库] # 二、概述 S2-001 漏洞由于在其解析 j…

Arduino ESP8266模块TFT液晶屏

ESP8266模块 模块实物图&#xff1a; 模块引脚定义&#xff1a; 工作模式选择&#xff1a; FlashBoot启动模式&#xff1a; GPIO15接GND UART固件下载模式: GPIO15接GND&#xff0c; GPIO0接GND 调试串口&#xff1a; URXD/UTXD 可用来下载固件和调试信息输出 模块使能&…

安装源码moveit遇到的问题

文章目录 问题1、 在操作 rosdep update 时报超时错误问题2、E: 仓库 “http://mirrors.ustc.edu.cn/ros/ubuntu focal Release” 没有 Release 文件问题3、卸载ompl问题4、安装moveit 问题1、 在操作 rosdep update 时报超时错误 出现 访问 https://raw.githubusercontent.com…

【官方文档解读】torch.jit.script 的使用,并附上官方文档中的示例代码

由 OpenMMLab 的部署教程 所述&#xff0c;对于模型中存在有控制条件的&#xff08;如 if&#xff0c;for 等&#xff09;&#xff0c;需要用 torch.jit.script 而非采样默认的 torch.jit.trace 方法。本文则详细介绍了下官方文档中对 torch.jit.script 的解释和示例代码。 to…