2024暑假友谊赛 2

news2024/9/20 14:46:42

Problem - 1150B - Codeforces

小C是重度强迫症晚期患者,如果某些图形无法按照他的想法排列,那么他就会迎来他的末日。某天小C来到了心心念念的女神家里(绝对不可能是女装大佬,绝对不可能),他发现地砖有两种颜色组成,分别是白色和绿色。小C对女神家里的一切都充满好奇,经过他不懈的研究,终于发现绿色地砖是白色地砖涂了绿色涂料变成的,这使他大为震惊,但是这些都不重要,主要是他家里的地砖是由十字形的绿色地砖组成,只要能证明女神家的地砖也是由一个个绿色十字组成,那么他就会认为女神和他很般配,如果不能那么他就会迎来强迫症末日,绿色十字如下图所示:

女神家的地砖有n行n列,总共n2𝑛2块地砖。对于一个绿色十字,小C认为必须由5块地砖组成,而且两个十字间不可以共用绿色地砖,由于女神家非常大,小C的强迫症末日一时间竟不知道要不要降临,所以需要你编程进行判断。

简单的暴力就可以了;

#include<bits/stdc++.h>
using namespace std;
#define int long long
char mp[55][55];
int n;
int dx[5]={0,0,0,1,-1};
int dy[5]={0,1,-1,0,0};
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>mp[i][j];	
		}
	}
	int sum=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			sum=0;
			for(int k=1;k<=4;k++){
				if(mp[i][j]=='.'){
					int xx=i+dx[k];
					int yy=j+dy[k];
					if(xx>0&&xx<=n&&yy>0&&yy<=n&&mp[xx][yy]=='.'){
						sum++;
					}
				}
			}
			if(sum==4){
				
				for(int k=1;k<=4;k++){
					if(mp[i][j]=='.'){
						int xx=i+dx[k];
						int yy=j+dy[k];
						if(xx>0&&xx<=n&&yy>0&&yy<=n&&mp[xx][yy]=='.'){
							mp[xx][yy]='#';
						}
					}
				}
				mp[i][j]='#';
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
		
			if(mp[i][j]=='.'){
				
				cout<<"NO"<<endl;
				return 0;
			}
		}
	
	}
	cout<<"YES"<<endl;
	return 0;
}

D - All Assign Point Add (atcoder.jp)

题意:给你一个长度为n的数组,你有Q次操作,

有三种类型的操作:

1 x:将数组所有的值全部都变为x;

2  x y:将y加入到数组下标为x的位置(数组下标从1开始)

3 x :输出下标为x的数组中值;

数据范围是2e5;

题解,当执行操作1的时候不用全部都更新,只用开一个数组记录执行操作2 / 3 之前有无将数更新为x即可;

#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[200005];
int b[200005];
queue<int>one;
queue<pair<int,int>>two;
queue<int>three;
queue<int>xuhao;
signed main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int Q;
	cin>>Q;
	int x=0,f=0;
	while(Q--){
		int op;
		cin>>op;
		if(op==1){
			cin>>x;
			f++;
		}
		else if(op==2){
			int y,u;
			cin>>y>>u;
			if(b[y]!=f){
				b[y]=f;
				a[y]=x+u;
			}
			else{
				a[y]+=u;
			}
		
		}
		else if(op==3){
			int p;
			cin>>p;
		if(b[p]==f)cout<<a[p]<<endl;
		else {
			b[p]=f;
			a[p]=x;
			cout<<a[p]<<endl;
		}
			
		}
	}
	
	
}

Problem - 1332D - Codeforces

 题解:构造一个矩阵,找找其中规律,要让自己的算法和正确答案之间的差值不大于k;

因为k的取值范围是1e5转换成二进制就是2的17次方,所以将1<<17位,接着我们来构造一个矩阵:

2*2的矩阵可以吗,显然不行,这样的话小明的算法和正确答案是一模一样的,那我们构造一个2*3的矩阵,

ans=1<<17;

我们需要让算法的结果为0,正确答案为k即可

矩阵:

ans+k       ans            0

k             ans+k            k         

按照小明的算法得到的结果就是

ans+k             ans                                 0

k                    ans(max(ans,k))              0

而正确答案是不用取最大,就取k,最后结果就是最大值k;

他们之间就像相差k;

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

signed main(){
	int k;
	cin>>k;
		int ans=(1<<17);
		cout<<2<<' '<<3<<endl;
		cout<<ans+k<<" "<<ans<<" "<<0<<endl;
		cout<<k<<" "<<ans+k<<" "<<k<<endl;
		return 0;
}

[ARC134B] Reserve or Reverse - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 什么是子序列:

从最初序列通过去除某些元素但不打乱余下元素的相对位置(在前或则在后)而形成的新序列

从第一个字符开始遍历元素,找到从a到h[i]的字母,一旦发现能找到就交换并且缩短距离右边界,

一些小细节就是找到的字母中一定不能超过r边界,不然就不满足总序列的条件;其次我们用栈区存元素出现的下标,是为了让r在尽可能的范围内最小化缩短,这样可能可以交换更多的字母;

#include <bits/stdc++.h> 

using namespace std;  
string s;  
vector<int> v[30];
int N;  
int main(){  
	cin >> N >> s; 
	for(int i=0; i<N; i++)v[s[i] - 'a'].push_back(i);  
	
	int r = N - 1; // 初始化r为字符串s的最后一个字符的索引  
	
	for(int l=0; l<N; l++){  
		int u = -1; // 用于存储找到的符合条件的字符的索引,初始化为-1  
		
		// 遍历从'a'到当前字符s[l]之间的所有字母(按ASCII码顺序)  
		for(int j=0; j<s[l]-'a' && u == -1; j++){  
			// 移除当前vector中索引大于r的元素,因为这些元素在s[r]之后,不可能与s[l]交换  
			while(!v[j].empty() && v[j].back() > r)  
				v[j].pop_back();  
			
			// 如果当前vector不为空,且最后一个元素的索引在[l+1, r]之间(即在当前字符s[l]之后但在s[r]之前或相等),则更新u  
			if(!v[j].empty() && v[j].back() <= r && v[j].back() > l){  
				u = v[j].back(), v[j].pop_back(); // 更新u并移除该元素,因为已经找到并准备交换  
			}  
		}  
		
		// 如果找到了符合条件的字符(即u != -1),则交换s[l]和s[u](或s[r],因为r在循环开始前被设置为u)  
		if(u != -1){  
			r = u; // 更新r为找到的字符的索引  
			swap(s[l], s[r]); // 交换字符  
		}  
	}  
	
	cout << s; // 输出排序后的字符串  
	return 0;  
}

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

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

相关文章

醒醒,别睡了...讲《数据分析pandas库》了—/—<2>

废话不多说&#xff0c;直接开讲! 一、 1、pandas变量类型的转换 Pandas 支持的数据类型 &#xff1a; 1、float&#xff1a;浮点型 2、int&#xff1a;整型 3、string&#xff1a;字符串类型 4、bool&#xff1a;布尔类型 5、datetime64[nsr]&#xff1a; 示精确到纳秒的日期…

跨棒距、公法线和齿厚对应关系分析

前面有一期讨论了下滚齿径向进刀量和齿厚的对应关系&#xff1a;《》&#xff0c;有小伙伴又问了&#xff0c;加工时是用跨棒距或者公法线去控制齿厚的&#xff0c;直接给齿厚是无法测量的&#xff0c;如果测一个值再去计算&#xff0c;有点麻烦&#xff0c;有没有他们之间的对…

【操作系统】解析线程安全中的 Synchronized 关键字

目录 synchronized一、互斥性二、可重入性三、synchronized的使用 synchronized synchronized作为确保多线程安全的重要关键字 接下来我们来学习它的特性&#xff1a; 互斥性可重入性 一、互斥性 synchronized会起到互斥效果,某个线程执行到某个对象的synchronized中时,其他…

【详谈】HashMAP深度剖析,全面消化吸收

【万字长文】 还没写完!!还没写完!!!还在码字中,只是先放上,防止又写着没了,自己文件没了… 最近,可以说的上自己博客停更大约有一两个月了,一直在忙于公司中的项目和业务,典型的牛马看了都流泪 今天,自己刚刚优化了一个查询耗时的BUG,在这里我就引入的hashmap作为我存储队列的…

Linux 某进程 CPU 高问题,用 Shell 脚本发现处理

发现高CPU使用率进程 首先&#xff0c;我们需要编写一个Shell脚本来发现系统中CPU使用率最高的进程。以下是一个简单的脚本示例&#xff1a; #!/bin/bash# 设置 CPU 使用率的阈值,一般设置90&#xff1b;这里是demo&#xff0c;所以用30 CPU_THRESHOLD30# 获取占用 CPU 最高的…

学习笔记 韩顺平 零基础30天学会Java(2024.7.24)

P416 匿名内部类本质 IA tiger new IA(){//IA是一个接口 //重写 System.out.println(“老虎叫唤。。。”); } P417 匿名内部类使用 基于类的匿名内部类 Father father new father(“jack”){};//不带大括号运行类型是Father&#xff0c;带大括号就是匿名内部类,相当于是匿名…

【深度学习入门】安装conda/miniconda、所需包类、CUDA与conda/Miniconda间的关系

深度学习入门 须知 本教程跟随李沐老师课程随笔&#xff0c;课程链接点击此处。 CUDA和Anaconda的关系 CUDA Toolkit是由Nvidia官方提供的完整工具包&#xff0c;其中提供了Nvidia驱动程序、开发CUDA程序相关的开发工具包等。 Anaconda在安装Pytorch等会用到的CUDA的框架时…

操作系统(三)中断----软中断

软中断与硬中断很像 软中断是纯软件实现的&#xff0c;宏观效果看上去和中断差不多的一种方式。 什么叫宏观效果呢&#xff1f;意思就是说&#xff0c;中断在宏观层面看来&#xff0c;就是打断当前正在运行的程序&#xff0c;转而去执行中断处理程序&#xff0c;执行完之后再返…

【Python机器学习】使用Matplotlib注解绘制树形图

通过数据集可以创建树&#xff0c;但是字典的表示形式非常不易于理解&#xff0c;而且直接绘制图形也比较困难。但是通过Matplotlib库可以绘制树形图。 决策树的主要优点就是直观、易于理解&#xff0c;如果不能将其直观的显示出来&#xff0c;就无法发挥其优势。 Matplotlib…

y=λsin(πx)分岔的研究

使用如下的迭代格式&#xff0c;λ为可变的参数 用如下代码对收敛的λ的值进行探究&#xff0c;这里的r代表λ %通过观察是否凝聚在同一个点来判断是否收敛 clear;clf; axis([0,4,0,4]); grid; hold on for r0:0.3:3.9x[0.1];for i2:150x(i)r*sin(pi*x(i-1));endpause(0.5);fo…

心动小站Ⅶ--人工智能的虚假承诺

前言 1770 年&#xff0c;匈牙利作家兼发明家 Wolfgang von Kempelen 推出了一款名为“土耳其机器人”的自动国际象棋机器。该机器在欧洲各地展示了其自动化国际象棋大师技能&#xff0c;在与人类对手的比赛中频频获胜。据说它甚至击败了拿破仑和本杰明富兰克林等著名人物。土…

Prometheus之数据类型和函数

前言&#xff1a; 在了解Prometheus数据类型前&#xff0c;我们先了解下面几个统计学名词概念&#xff1a; 平均数&#xff08;Mean&#xff09;&#xff1a; 平均数是所有数据加起来除以数据个数得到的结果。它表示数据的中心趋势。 最大值&#xff08;Maximum&#xff09…

Hadoop集群安装配置

文章目录 Hadoop部署配置集群配置历史服务器配置日志的聚集分发Hadoop群起集群Hadoop群起脚本 准备工作&#xff1a;需要3台虚拟机&#xff0c;每台虚拟机搭建好JDK并配置环境变量 Hadoop部署 1&#xff09;集群部署规划 注意&#xff1a;NameNode和SecondaryNameNode不要安…

Vue中el的两种写法

大家好我是前端寄术区博主PleaSure乐事。今天了解到了Vue当中有关el的两种写法&#xff0c;记录下来与大家分享&#xff0c;希望对大家有所帮助。 方法一 解释 第一种方法我们直接用new创建并初始化一个新的 Vue 实例&#xff0c;并定义了 Vue 实例的数据对象&#xff0c;在给…

数组算法--二分查找

目录 一.前言 二.算法的核心思路 三.算法的核心代码以注释详解 一.前言 二分查找也叫折中查找&#xff0c;为什么会这样叫呢&#xff1f;就是因为我们二分查找的核心逻辑就是每查找完一次&#xff0c;都能将查找的范围给缩小一半&#xff0c;也就是折中。但使用二分查找又有个…

宏VB的1004问题,方法作用于对象错误,如何解决?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

RV1126 Linux 系统,接外设,时好时坏(二)排查问题的常用命令

在 RV1126 Linux 系统中,排查外设连接问题时,可以使用多种命令来诊断和调试。以下是一些常用的命令和工具: 1. 查看系统日志 dmesg: 显示内核环形缓冲区的消息,通常包含设备初始化、驱动加载和错误等信息。 dmesg | grep <设备名或相关关键字>journalctl: 查看系统…

windows 下删除一个文件夹及其子文件夹下相同后缀名的文件

问题 我有一个工作目录&#xff0c;沉积了四五年的工作 文件。其中有一个相同格式的中间过程文件暂用很大体积&#xff0c;也不需要保留&#xff0c;并且可以通过其他文件生成。因此想一次删除这个工作目录下的所有相同后缀的文件。 解决方法 在工作目录的地址栏输入“cmd”…

leaflet【九】使用天地图改变地图底色

本文将详细探讨如何在Leaflet地图框架中集成天地图&#xff0c;并介绍如何通过调整背景色和滤镜来改变地图的显示效果。首先&#xff0c;我们将解释如何在Leaflet中配置天地图作为底图&#xff0c;包括API密钥的获取与使用。接下来&#xff0c;文章将展示如何通过CSS和JavaScri…

高等数学 第六讲 一元微分学的应用(二)_中值定理,微分等式,微分不等式

高等数学 第6讲 中值定理 微分等式 微分不等式 文章目录 高等数学 第6讲 中值定理 微分等式 微分不等式1.涉及函数的中值定理1.1 有界与最值定理1.2 介值定理1.3 平均值定理1.4 零点定理 2.涉及导数(微分)的中值定理2.1 导数零点定理2.2 罗尔定理2.3 拉格朗日中值定理2.4 柯西中…