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

蓝桥杯14届国赛 合并数列

问题描述

小明发现有很多方案可以把一个很大的正整数拆成若干正整数的和。他采取了其中两种方案,分别将他们列为两个数组 {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}

 

合并规则:按照从左至右的顺序依次比较两个数组中的对应元素,优先选取较小元素与其右边的元素进行合并。

#include<iostream>
using namespace std;const int N = 1e5+10;
int n, m;
int a[N], b[N];int ans;int main()
{cin>>n>>m;for(int i=1; i<=n; ++i) cin>>a[i];for(int i=1; i<=m; ++i) cin>>b[i];//i 和 j 同步递增,使用while循环 int i=1, j=1;while(i<=n && j<=m){if(a[i]<b[j]){a[i+1] += a[i];  //合并到下一个元素i++;ans++;}else if(b[j]<a[i]){b[j+1] += b[j];j++;ans++;}else{i++;j++;}}cout<<ans;return 0;
}

相关文章:

  • Spyglass:在batch/shell模式下运行目标的顶层是什么?
  • 【project】--数据挖掘
  • Docker 部署 - Crawl4AI 文档 (v0.5.x)
  • 【TI MSPM0】CCS工程管理
  • 【LwIP源码学习6】UDP部分源码分析
  • 研修室智慧化升级实践:线上预约+智能门锁的融合方案
  • 高级数据结构:线段树
  • Problem B: 面向对象综合题2
  • LLM框架
  • 【Diffusion】在华为云ModelArts上运行MindSpore扩散模型教程
  • 基于SpringBoot的抽奖系统测试报告
  • 11、参数化三维产品设计组件 - /设计与仿真组件/parametric-3d-product-design
  • Linux-TCP套接字编程简易实践:实现EchoServer与远程命令执行及自定义协议(反)序列化
  • 基于物联网的智能家居监控系统设计和实现(源码+论文+部署讲解等)
  • OpenWrt开发第8篇:树莓派开发板做无线接入点
  • 计算机网络笔记(二十一)——4.3IP层转发分组的过程
  • 小土堆pytorch--torchvision中的数据集的使用dataloader的使用
  • 在python中,为什么要引入事件循环这个概念?
  • 第二十三节:图像金字塔- 图像金字塔应用 (图像融合)
  • 封装和分用(网络原理)
  • 多家外资看好中国市场!野村建议“战术超配”,花旗上调恒指目标价
  • 江西吉水通报一男子拒服兵役:不得考公,两年内经商、升学等受限
  • 茅台回应“茅台1935脱离千元价位带竞争”:愿与兄弟酒企共同培育理性消费生态
  • 《致1999年的自己》:千禧之年的你在哪里?
  • 体坛联播|穆勒主场完成拜仁谢幕战,山西车队再登环塔拉力赛
  • 冯德莱恩:欧美贸易谈判前不会前往美国会见特朗普