ICPC-2021 甜甜圈题解

本文详细解析ICPC-2021甜甜圈问题的解题思路,通过问题转化,使用树状数组优化,避免实际数据移动,探讨不同情况下的计算方法,最终给出AC代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意

  该博客是为了帮助同学学习,并非为了协助同学刷题,请读者保持自觉,请勿做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

解题过程

  首先,我们很容易发现,对于任意一种情况我们都有固定的解法:

  1. 将最甜的甜甜圈上方的甜甜圈全部移动至另一侧
  2. 吃掉最甜的甜甜圈
  3. 重复1直至没有甜甜圈为止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空梦丿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值