注意
该博客是为了帮助同学学习,并非为了协助同学刷题,请读者保持自觉,请勿做CV工具人。另外为了节省篇幅,代码中不再写明#include
,如果遇到我没有声明的函数,那么就是某一个头文件中的函数。
题干
原题地址:ICPC-2021-J 甜甜圈 - 牛客
艾洛喜欢吃甜食,他有n
个甜甜圈,现在叠成了两叠(如下图所示),第一叠有n1
个,第二叠有n2
个(n1 + n2 = n
),要解决的问题如下:
- 每个甜甜圈都有一个唯一的甜度值
si
,甜度值两两不同 - 每次艾洛可以把任意一叠位于顶端的一个甜甜圈移动到另一叠顶端,若该甜甜圈是当前所有甜甜圈中最甜的(甜度值最大),那么艾洛不会移动甜甜圈,而是直接吃掉
请你求出艾洛吃完所有甜甜圈的最小移动步数。
输入描述
第一行,两个正整数n1, n2(1 ≤ n1+n2 ≤ 100000),分别表示两叠甜甜圈的个数。
第二行,n1个整数,按从顶到底的顺序排列,表示第一叠甜甜圈的甜度值。
第三行,n2个整数,按从顶到底的顺序排列,表示第二叠甜甜圈的甜度值。
保证 1 ≤ si ≤ 6*106 且两两互不相同。
输出描述
总共一行,一个整数,表示最少步数。
示例
输入:
3 3
1 4 5
2 7 3
输出:
6
解题过程
首先,我们很容易发现,对于任意一种情况我们都有固定的解法: