当前位置: 首页 > news >正文

蓝桥杯-合并数列

小明发现有很多方案可以把一个很大的正整数拆成若干正整数的和。他采取了其中两种方案,分别将它们列为两个数组 {a1, a2, …, an} 和 {b1, b2, …, bm}。两个数组的和相同。

定义一次合并操作可以将某数组内相邻的两个数合并为一个新数,新数的值是原来两个数的和。小明想通过若干次合并操作将两个数组变成一模一样,即 n=m 且对于任意下标 i 满足 ai=bi。请计算至少需要多少次合并操作可以完成小明的目标。

输入格式

输入共 3 行。

第一行为两个正整数 n, m。

第二行为 n 个由空格隔开的整数 a1, a2, …, an。

第三行为 m 个由空格隔开的整数 b1, b2, …, bm。

输出格式

输出共 1 行,一个整数。

样例输入

4 3
1 2 3 4
1 5 4

样例输出

1

样例说明

只需要将 a2 和 a3 合并,数组 a 变为 {1, 5, 4},即和 b 相同。

评测用例规模与约定

对于 20% 的数据,保证 n, m ≤ 10^3。

对于 100% 的数据,保证 n, m ≤ 10^5,0 < ai, bi ≤ 10^5。

题解:

这题有两种写法, 第一种:模拟队列, 第二种:前缀和+二分

题解一:

模拟队列法

对于两个序列 a 和 b 的开头包含三种情况:

  1. a[0]等于b[0], 此时把两个开头都删除掉
  2. b[0] < a[0], 此时把b[0]和b[1]相加, 然后删除b[0]和b[1], 把b[0]和b[1]相加的结果放到b的开头, 相当于是合并b的前两个数, cnt ++ (cnt是总操作数)
  3. a[0] < b[0], 此时把a[0]和a[1]相加, 然后删除a[0]和a[1], 把a[0]和a[1]相加的结果放到a的开头, 相当于是合并a的前两个数, cnt ++

ac代码👇

#include <bits/stdc++.h>
using namespace std;
#define int long long    // 序列中的数最大是1e5, 如果两个都是1e5, 那么这两个数相加会爆int
const int N = 1e5 + 10;
int a[N], b[N];signed main()
{int n, m; cin >> n >> m;for (int i = 0; i < n; i ++) cin >> a[i];for (int j = 0; j < m; j ++) cin >> b[j];int i = 0, j = 0, cnt = 0;while (i < n && j < m)  // 也可以用dequeue, 但运行效率会低一些{if (a[i] == b[j]) i ++, j ++;    else if (a[i] < b[j]) a[i + 1] = a[i] + a[i + 1], i ++, cnt ++;else if (b[j] < a[i]) b[j + 1] = b[j] + b[j + 1], j ++, cnt ++;}cout << cnt << endl;return 0;
}

题解二:

前缀和+二分法

  • 先对两个序列都求一次前缀和
  • 当前缀和相同的时候跳过, 不同的时候分为两种情况:
  • a<b的时候, 用二分查找一下"第一个等于b的值得下标", 然后加上操作次数; b<a的时候, 用二分查找一下"第一个等于a的值得下标", 然后加上操作次数
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 10;  // 会爆int
int a[N], b[N];signed main()
{int n, m; cin >> n >> m;for (int i = 1; i <= n; i ++) {cin >> a[i];a[i] += a[i - 1];    // 求前缀和}for (int j = 1; j <= m; j ++) {cin >> b[j];b[j] += b[j - 1];  // 求前缀和}int i = 1, j = 1, cnt = 0;while (i <= n && j <= m) {if (a[i] == b[j]) i ++, j ++;else if (a[i] < b[j]){int l = i, r = n;while (l < r){int mid = l + r >> 1;if (a[mid] >= b[j]) r = mid;	// 找到的是第一个满足 条件的下标 else l = mid + 1;}cnt += l - i;i = l;}else if (b[j] < a[i]){int l = j, r = m;while (l < r){int mid = l + r >> 1;if (b[mid] >= a[i]) r = mid;  // 找到的是第一个满足 条件的下标else l = mid + 1;}cnt += l - j;j = l;}}cout << cnt << endl;return 0;
}

觉得写的不错的话, 点个赞吧~

相关文章:

蓝桥杯-合并数列

小明发现有很多方案可以把一个很大的正整数拆成若干正整数的和。他采取了其中两种方案&#xff0c;分别将它们列为两个数组 {a1, a2, …, an} 和 {b1, b2, …, bm}。两个数组的和相同。 定义一次合并操作可以将某数组内相邻的两个数合并为一个新数&#xff0c;新数的值是原来两…...

《web应用技术》第9次课后作业

一、将前面的代码继续完善功能 1、采用XML映射文件的形式来映射sql语句&#xff1b; 2、采用动态sql语句的方式&#xff0c;实现条件查询的分页。 二、学习git的使用。 1、每个小组将自己的项目上传到gitee&#xff0c;学会协作开发&#xff1b; 2、学会从gitee上拉取项目…...

FRAUDARCatchSync算法简介

参考&#xff1a;https://blog.51cto.com/u_15127663/2778705 1. 背景 Fraudar 要解决的问题是&#xff1a;找出社交网络中最善于伪装的虚假用户簇。虚假用户会通过增加和正常用户的联系来进行伪装&#xff0c;而这些伪装(边)会形成一个很密集的子网络&#xff0c;可以通过定义…...

刷题之将有序数组转换成二叉搜索树(leetcode)

将有序数组转换成二叉搜索树 正常递归&#xff0c;中序遍历 递归经常会把自己绕晕&#xff0c;还是得画图分析 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(null…...

K-means聚类模型教程(个人总结版)

K-means聚类是一种广泛应用于数据挖掘和数据分析的无监督学习算法。它通过将数据点分成K个簇&#xff08;cluster&#xff09;&#xff0c;使得同一簇内的数据点之间的相似度最大&#xff0c;不同簇之间的相似度最小。本文将详细介绍K-means聚类算法的背景、基本原理、具体实现…...

android怎么告诉系统不要回收

在Android中&#xff0c;如果你想告诉系统不要回收你的应用程序&#xff0c;可以通过设置Activity的属性来实现。你可以设置android:configChanges属性&#xff0c;指定在哪些配置更改时不重新创建Activity。 例如&#xff0c;如果你想指示系统在屏幕方向更改时不要重新创建Ac…...

【FAQ】HarmonyOS SDK 闭源开放能力 —IAP Kit(2)

1.问题描述&#xff1a; 应用内支付IAP Kit和Payment Kit的区别以及适用场景&#xff1f; 解决方案&#xff1a; IAP Kit是四方支付&#xff0c;仅支持在线虚拟商品&#xff0c;如会员&#xff0c;游戏钻石等&#xff0c;双框架支持全球&#xff0c;目前单框架暂时只支持国内…...

ubuntu设置root开机登录,允许root用户ssh远程登录

ubuntu与centos系统不同&#xff0c;默认root开机不能登录。 1、输入一下命令创建root密码&#xff0c;根据提示输入新密码 sudo passwd root 2、打开gdm-autologin文件&#xff0c;将auth required pam_succeed_if.so user ! root quiet_success这行注释掉&#xff0c;这行就…...

Web测试面试题(二)

一&#xff1a;简述HTTP协议的状态码包含哪些&#xff1f; 2XX&#xff0c;表示成功 3XX&#xff0c;表示重定向 4XX&#xff0c;表示客户端错误 5XX&#xff0c;表示服务器错误 二&#xff1a;HTTP和HTTPS的区别&#xff1f; 《1》安全性上的区别&#xff1a; HTTPS&#x…...

VBA宏指令写的方法突然不能用了

背景:项目组有个自动化测试项目,实在excel中利用VBA开发的;时间比较久远,我前面的哥们走后,这个软件一直在用,最近系统不知道是不是更新的缘故;有些代码除了问题; 先上源码: Dim Conn As Object, Rst As Object Dim sqlStr$ Dim str_start_SN$, str2$ str_start_SN …...

第13章 Python建模库介绍

以下内容参考自https://github.com/iamseancheney/python_for_data_analysis_2nd_chinese_version/blob/master/%E7%AC%AC05%E7%AB%A0%20pandas%E5%85%A5%E9%97%A8.md 《利用Python进行数据分析第2版》 用以学习和记录。 本书中&#xff0c;我已经介绍了Python数据分析的编程基…...

IP学习——ospf1

OSPF:开放式最短路径优先协议 无类别IGP协议&#xff1a;链路状态型。基于 LSA收敛&#xff0c;故更新量较大&#xff0c;为在中大型网络正常工作&#xff0c;需要进行结构化的部署---区域划分、ip地址规划 支持等开销负载均衡 组播更新 ---224.0.0.5 224.0.0.6 …...

别说废话!说话说到点上,项目高效沟通的底层逻辑揭秘

假设你下周要在领导和同事面前汇报项目进度&#xff0c;你会怎么做&#xff1f;很多人可能会去网上搜一个项目介绍模板&#xff0c;然后按照模板来填充内容。最后&#xff0c;汇报幻灯片做了 80 页&#xff0c;自己觉得非常充实&#xff0c;但是却被领导痛批了一顿。 这样的境…...

前后端编程语言和运行环境的理解

我已重新检查了我的回答,并确保信息的准确性。以下是常用的编程语言,以及它们通常用于前端或后端开发,以及相应的框架和运行环境: 前端开发 JavaScript 框架:React, Angular, Vue.js, Ember.js, Backbone.js运行环境:Web 浏览器HTML (HyperText Markup Language) 不是编…...

一顿五元钱的午餐

在郑州喧嚣的城市一隅&#xff0c;藏着一段鲜为人知的真实的故事。 故事的主角是一位年过半百的父亲&#xff0c;一位平凡而又伟大的劳动者。岁月在他脸上刻下了深深的痕迹&#xff0c;但他眼神中闪烁着不屈与坚韧。 他今年52岁&#xff0c;为了给远在家乡的孩子们一个更好的…...

【前端每日基础】day60——TDK三大标签及SEO引擎优化

TDK 是指 Title&#xff08;标题&#xff09;、Description&#xff08;描述&#xff09;、Keywords&#xff08;关键词&#xff09;这三个网页的重要元信息标签&#xff0c;对于 SEO&#xff08;搜索引擎优化&#xff09;至关重要。下面是它们的作用和 SEO 优化建议&#xff1…...

vscode添加代办相关插件,提高开发效率

这里写目录标题 前言插件添加添加TODO Highlight安装TODO Highlight在项目中自定义需要高亮显示的关键字 TODO Tree安装TODO Tree插件 单行注释快捷键 前言 在前端开发中&#xff0c;我们经常会遇到一些未完成、有问题或需要修复的部分&#xff0c;但又暂时未完成或未确定如何处…...

JS对象超细

目录 一、对象是什么 1.对象声明语法 2.对象有属性和方法组成 二、对象的使用 1.对象的使用 &#xff08;1&#xff09;查 &#xff08;2&#xff09;改 &#xff08;3&#xff09;增 &#xff08;4&#xff09;删&#xff08;了解&#xff09; &#xff08;5&#xf…...

远程PLC、工控设备异地调试,贝锐蒲公英异地组网方案简单高效

北京宇东宁科技有限公司专门提供非标机电设备&#xff0c;能够用于金属制品的加工制造。设备主要采用西门子的PLC作为控制系统&#xff0c;同时能够连接上位机用于产量、温度、压力、电机运行数据的监控&#xff0c;以及工厂的大屏呈现需求。目前&#xff0c;客户主要是市场上的…...

【算法】梦破碎之地---三数之和

相信大家都有做过两数之和&#xff0c; 题目链接&#xff1a; 15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 在文章的开始让我们回顾一下三数之和吧&#xff01; 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], …...

初创团队如何通过Taotoken的Token Plan实现成本可控的AI应用开发

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创团队如何通过Taotoken的Token Plan实现成本可控的AI应用开发 对于预算敏感的初创团队和独立开发者而言&#xff0c;在开发AI应…...

基于Rust与Candle的AI推理引擎cria:简化大模型本地部署与优化

1. 项目概述&#xff1a;从“左移”到“创造”的AI推理引擎 最近在折腾AI模型本地部署和推理优化的朋友&#xff0c;可能都绕不开一个名字&#xff1a; cria 。这个由 leftmove 开源的项目&#xff0c;全称是“Cria: The AI Inference Engine”&#xff0c;直译过来就是“创…...

免费开源鼠标连点器终极指南:5分钟掌握高效自动化技巧

免费开源鼠标连点器终极指南&#xff1a;5分钟掌握高效自动化技巧 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#xff0c;…...

构建团队技能仓库:从知识管理到可执行技能包的系统化实践

1. 项目概述&#xff1a;从“技能包”到高效能工具箱最近在梳理团队内部的技术资产时&#xff0c;我反复思考一个问题&#xff1a;如何让那些散落在个人电脑、项目文档和口头交流中的“隐性知识”和“高效技能”&#xff0c;变成一个团队可以随时取用、持续进化的公共资产&…...

Cesium动态泛光效果实战:手把手教你用d3kit插件打造炫酷城市光效(附完整代码)

Cesium动态泛光效果实战&#xff1a;手把手教你用d3kit插件打造炫酷城市光效&#xff08;附完整代码&#xff09; 当夜幕降临&#xff0c;城市天际线被霓虹灯勾勒出流动的轮廓&#xff0c;这种视觉冲击力正是现代三维可视化项目的灵魂所在。本文将带你用d3kit这个轻量级插件&am…...

ECHO:不止是播放器——一款完整的桌面音乐产品

下载地址&#xff1a;canghaiapp.com 软件介绍&#xff1a;不止是播放器 ECHO 将自己定位为一款“完整的桌面音乐产品”。从技术架构上看&#xff0c;它确实与此相符&#xff1a; 核心技术选型&#xff1a;项目基于 Electron React 技术栈构建。Electron 赋予了它调用原生系…...

CFETR重载机械臂精确运动控制验证【附仿真】

✨ 长期致力于中国聚变工程实验堆、遥操作、多功能重载机械臂、路径规划、精确控制、数据融合控制研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;刚柔…...

【Midjourney Tea印相全链路解析】:从提示词工程到胶片质感渲染的7大隐性参数控制法则

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney Tea印相的技术起源与美学范式 Midjourney Tea印相并非传统摄影工艺的简单复刻&#xff0c;而是融合生成式AI语义理解、茶渍拓印物理建模与东亚留白美学的一次跨媒介实验。其技术雏形可追溯至…...

基于节点电价的电网对电动汽车接纳能力评估模型研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。 &#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &…...

利用 Taotoken 多模型聚合能力优化内容生成流水线的实践

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用 Taotoken 多模型聚合能力优化内容生成流水线的实践 对于内容创作团队而言&#xff0c;不同题材和创作阶段往往需要不同特长的…...