第十三届蓝桥杯真题:x进制减法,数组切分,gcd,青蛙过河

目录

x进制减法

数组切分

gcd

青蛙过河


        

        

x进制减法

其实就是一道观察规律的题。你发现如果a这个位置上的数x,b这个位置上的数是y,那么此位置至少是max(x,y)+1进制。一定要把位置找对啊 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10,mod=1000000007;
int len1,len2;
ll tmp,ans,a[N],b[N],c[N],n;
int main(){
	cin>>n;cin>>len1;
	for(int i=len1;i>=1;i--)cin>>a[i];
	cin>>len2;
	for(int i=len2;i>=1;i--)cin>>b[i];
	for(int i=len1;i>=1;i--){
		c[i]=max(max(a[i]+1,b[i]+1),2*1ll);
		a[i]=a[i]-b[i];
	}
	tmp=1;
	for(int i=1;i<=len1;i++){
		ans=(tmp*a[i]+ans)%mod;
		tmp=(tmp*c[i])%mod;
	}
	cout<<ans;
	return 0;
}
/*错解
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10,mod=1000000007;
int len1,len2;
ll tmp,ans,a[N],b[N],c[N],n;
int main(){
	cin>>n;cin>>len1;
	for(int i=1;i<=len1;i++)cin>>a[i];
	cin>>len2;
	for(int i=1;i<=len2;i++)cin>>b[i];
	for(int i=1;i<=len1;i++){
		c[i]=max(max(a[i]+1,b[i]+1),2*1ll);
		a[i]=a[i]-b[i];//这个bug我找了两个小时,不能从高位开始减,
	}
	tmp=1;
	for(int i=len1;i>=1;i--){
		ans=(tmp*a[i]+ans)%mod;
		tmp=(tmp*c[i])%mod;
	}
cout<<ans;
	return 0;
}*/

        

        

数组切分

一道动态规划题,

我们设置f[i]表示从1到i区间的切法。那么可以从任意区间[j,i]转移,只要这个区间[j,i]也是满足题意的就行。那么如果判断[j,i]是否满足题意呢?

首先要注意到题上给出的是连续的的1~n的某个排列,然后我们只需要判断区间的极值和区间长度是否一样就行,如果相等,就说明此区间一定是连续的自然数。 

#include <bits/stdc++.h>
using namespace std;
long long f[10010],mod =1000000007;
int a[10010],n;
int main(){
	cin>>n;for(int i=1;i<=n;i++)cin>>a[i];
	f[0]=1;
	for(int i=1;i<=n;i++){
		int ma=a[i],mi=a[i];
		for(int j=i;j>=1;j--){
			ma=max(ma,a[j]);mi=min(mi,a[j]);
			if(i-j==ma-mi){
				f[i]=(f[i]+f[j-1])%mod;
			}
		}
	}
	cout<<f[n];
	return 0;
}

        

        

gcd

这道题本以为很麻烦,但是做着做着就发现了个不可思议的规律。

观察5和7,它们的最大gcd一定是2,为什么呢?因为你5+k和7+k始终保持差2,所以它们不可能有比2更大的gcd(因为它们两个一定是不等的)

对于一组a和b(假设b大于a),不妨另c=b-a。最终的a+k和b+k一定是差c,而且c必是它们的公因数。所以如果b+k是m*c的话,那么此时a+k必然也是c的倍数(因为它们两个差c啊),所以只需要枚举到b的下一个c的倍数即可,也就是(b/c+1)*c 

验证5和9,它们差值为4,我们枚举到8和12时候发现gcd已经是4了,那么k就确定了

验证2和9,它们差值为7,我们一直枚举到7和14时发现gcd为7,那么此时k也确定了

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,s,c;
int main(){
	cin>>a>>b;
	c=abs(a-b);
	if(a>b)swap(a,b);
	s=b/c;cout<<(s+1)*c-b;
	return 0;
}

        

        

青蛙过河

二分做法:

我们对跳跃距离二分,然后去判断这个距离能不能跑2x次即可,既然我们都已经确定了区间长度了。

那么不妨我们把这整个长度分成等长的mid区间,只需要保证所有的mid长度区间和都是大于2x的就行。

证明:(我只会反证法)

假设存在一组mid长度的区间和小于2x,那么经过x次来回,必然要经过此区间2x次,所以不成立。故原假设成立。

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
int s[N];
ll n,x;
bool check(int m){
	for(int i=1;i+m<=n;i++){
		if(s[i+m-1]-s[i-1]<2*x) return false;
	}
	return true;
}
int main(){
	cin>>n>>x;int a;
	for(int i=1;i<n;i++)cin>>a,s[i]=s[i-1]+a;
	int l=1,r=n;
	while(l<=r){
		int mid=(l+r)>>1;
		if(check(mid)) r=mid-1;
		else l=mid+1;
	}
	cout<<l;
	return 0;
}

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

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

相关文章

题目:建造房屋 (蓝桥OJ3362)

问题描述: 代码: #include<bits/stdc.h> using namespace std; int n, m, k, ans, mod 1e9 7; long long dp[55][2605]; /*dp[i][j]&#xff1a;第i个街道上建j个房屋的总方案数枚举所有的转移&#xff0c;累加到dp[n][k]即总方案数 */ int main() {cin >> n &…

秋招数据库学习2(20240408-20240412共10道)

由于感觉数据库难度可能暂时面试用不到&#xff0c;就先不刷啦 20240408 1.从不订购的客户 SELECT Name AS Customers FROM Customers C LEFT JOIN Orders O ON C.Id O.CustomerId WHERE CustomerId is nullselect customers.name as Customers from Customers wher…

蓝桥杯-最大子矩阵

问题描述 下面是一个 20x20 的矩阵&#xff0c;矩阵中的每个数字是一个1到9之间的数字&#xff0c;请注意显示时去除了分隔符号。 6985924183938786894117615876963131759284373473483266274834855367125655616786474316121686927432329479135474133499627734472797994592984…

导入导出之使用EasyExcel快速进行表格导出

使用 EasyExcel 快速进行表格导入导出操作 在日常工作中&#xff0c;表格的导入和导出是常见的需求。针对这种情况&#xff0c;EasyExcel 提供了便捷的解决方案&#xff0c;可以快速地实现 Excel 表格的导入和导出操作。本文将介绍如何使用 EasyExcel 进行表格导出&#xff0c…

path环境变量的作用

当我把一个运行文件的路径加入到了path环境变量&#xff0c;就可以在cmd命令行随时使用运行。 在path中有两个path上面的是用户的path&#xff0c;下面的是计算机的path

【图像处理】-小议YUV色彩空间-YUV和RGB格式的来由,相互关系以及转换方式,并对编程实现的YUV转为RGB程序进行介绍

小议YUV色彩空间 摘要: 在视频图像处理等相关相关领域&#xff0c;YUV是一个经常出现的格式。本文主要以图解的资料形式详细描述YUV和RGB格式的来由&#xff0c;相互关系以及转换方式&#xff0c;并对编程实现的YUV转为RGB程序进行介绍。 1 引言 自然界的颜色千变万化&#xff…

C# Solidworks二次开发:模型中实体Entity相关操作API详解

大家好&#xff0c;今天要讲的一些API是关于实体的相关API。 在开发的过程&#xff0c;很多地方会涉及到实体的相关操作&#xff0c;比如通过实体选中节点。下面就直接开始介绍API&#xff1a; &#xff08;1&#xff09;第一个API为Select4&#xff0c;这个API的含义为选中一…

编译器领域一些特别好的文章

xz​​​​​​​s​​​​​​​cv_note/cv算法工程师成长路线.md at master HarleysZhang/cv_note GitHub记录cv算法工程师的成长之路&#xff0c;分享计算机视觉和模型压缩部署技术栈笔记。https://harleyszhang.github.io/cv_note/ - cv_note/cv算法工程师成长路线.md at…

Llama2模型本地部署(Mac M1 16G)

环境准备 环境&#xff1a;Mac M1 16G、Conda Conda创建环境配置 使用Anaconda-Navigator创建python 3.8环境 切换到新建的conda环境&#xff1a; conda activate llama38 llama.cpp 找一个目录&#xff0c;下载llama.cpp git clone https://github.com/ggerganov/llama.…

【汇编】计算机系统构成

计算机系统构成 计算机系统包括硬件和软件两部分 硬件 典型的计算机结构包括 中央处理器(CPU)、存储器和输入输出(I/O)子系统 三个主要组成部分&#xff0c;用系统总线把它们连接在一起 计算机硬件组成与各部分之间的联系 软件 计算机软件可以分为系统软件和用户软件两大类 …

​​​​网络编程学习探索系列之——广播原理剖析

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的网络编程系列之广播原理剖析&#xff0c;在这篇文章中&#xff0c; 你将会学习到如何在网络编程中利用广播来与局域网内加入某个特定广播组的主机&#xff01; 希望这篇文章能对你有所帮助&#xff0c;大家要是觉得我写…

集运公司代购系统|轻松为国外客户代购转运中国电商平台货物

做集运的公司会有大量的在国外的客户&#xff0c;客户会有需求购买中国电商平台&#xff0c;如淘宝、1688、京东等的货物。使用代购系统可以实现让客户在系统中搜索查找国内电商平台的货源&#xff0c;自动下单付款&#xff0c;支持多语言多货币支付。 查看演示网站 前台/会员中…

常用组合逻辑电路模块(3):数据选择器

数据选择器概述 数据选择&#xff1a;指经过选择&#xff0c;将多路数据中的某一路数据传到公共数据线上。(相当于多个输入的单刀多掷开关) 数据选择器&#xff1a;能实现数据选择功能的逻辑电路。也称多路选择器或多路开关。如下图为4选1数据选择器&#xff1a; 对于4选1数据…

电大搜题:为您解锁学习的新大门

近年来&#xff0c;随着社会的不断进步和教育的普及化&#xff0c;广大民众对学习的需求也越来越迫切。在这个信息爆炸的时代&#xff0c;大家对于获取准确、可靠学习资料的渴望日益增长。正是基于这样的背景&#xff0c;黑龙江开放大学&#xff08;简称黑开大&#xff09;与广…

Linux学习_进程等待和替换

1.进程等待 概述&#xff1a;父进程通过进程等待的方式&#xff0c;回收子进程资源&#xff0c;获取子进程退出信息 1.1等待方法 wait&#xff1a; #include<sys/types.h> #include<sys/wait.h> pid_t wait(int*status); 返回值&#xff1a; 成功返回被等待进程…

【MATLAB基础】频谱分析

01.引言 频率是单位时间内某事件重复发生的次数,用ω表示,单位是赫兹(Hz)。设m时间内某事件重复发生n次,则此事件发生的频率ω为一。又因为周期定义为重复事件发生的最小时间间隔,故频率也可以表示为周期的倒数:ωn/m,T表示周期。频率是一个很重要的概念,在工程数学中常用于分…

BST:一款功能强大的二进制字符串代码格式转换工具

关于BST BST是一款功能强大的二进制字符串代码格式转换工具&#xff0c;该工具可以将二进制字符串转换为能够兼容不同语言源代码的各种格式&#xff0c;以满足各种安全开发领域中的渗透测试或漏洞利用开发场景。 功能介绍 1、将二进制文件转换并转储为二进制字符串格式的标准输…

leaflet 显示地图加载的瓦片的行列号

背景&#xff1a; 在开发过程中&#xff0c;对接wmts服务的时候&#xff0c;调试参数过程中有时候需要直观看到当前地图加载的瓦片的行列号。 实现原理&#xff1a; 利用Leaflet的L.GridLayer图层&#xff0c;加载一个网格图层&#xff0c;重写其createTile方法&#xff0c;…

开源AI图像识别:支持文件批量识别快速对接数据库存储

随着数字化转型的不断深入&#xff0c;图像识别技术在各行各业中的应用越来越广泛。文件封识别作为图像识别技术的一个分支&#xff0c;能够有效地提高文件处理的自动化程度和准确性。本文将探讨文件封识别技术的原理、应用场景以及如何将识别后的内容批量对应数据库字段进行存…

Blast生态借贷协议Pac Finance陷“清算”风波,兄弟项目ParaSpace曾上演内斗

Blast生态协议又出事了。4月11日晚间&#xff0c;有用户发现借贷协议Pac Finance上出现了大量ezETH清算&#xff0c;涉及金额达2400 万美元。官方回应称&#xff0c;系一位智能合约工程师的操作导致Pac Finance发行清算阈值在没有事先通知团队的情况下被意外更改。 目前社区内…