链接:https://ac.nowcoder.com/acm/contest/5026/B
来源:牛客网

题目描述
最近米咔买了n个苹果和m个香蕉,他每天可以选择吃掉一个苹果和一个香蕉(必须都吃一个,即如果其中一种水果的数量为0,则他不能进行这个操作),或者使用魔法将某一种水果的数量翻倍。
现在米咔想吃西瓜了,但是他的主人赛小息不让他买新水果,除非苹果和香蕉没有了,即数量都是0了。

现在米咔想知道,最少用多少天他可以吃光苹果和香蕉。
可以证明的是,一定存在一种方案可以让米咔在若干天后吃光苹果和香蕉。

输入描述:
第一行一个正整数T(T≤100),代表数据组数。

接下来T行每行两个正整数n,m(n,m ≤100000)。

输出描述:
共T行,每行一个正整数代表答案。
示例1
输入
3
1 1
1 2
2 5
输出
1
3
7
说明
对于第三组测试样例(2,5),第一天令n翻倍变成(4,5),接下来连续吃三天水果变成(1,2),第五天令n翻倍变成(2,2),接下来连续吃两天水果,在第七天时吃光苹果和香蕉。

解题思路

1

首先解释一下为什么一定有一种方案,可以吃完。如果大家已经理解,直接跳过看2

假设a < b, 差值d = b - a;
1、如果a > d,则先每天各吃一个苹果和香蕉,这个时候差值d是不变的,直到a = d , 这时b = a + d=2a , 我们将a翻倍后,a = b , 然后再吃a天就可以吃完。
2、如果a < d,将a翻倍,直到满足情况1。
3、如果a = d,那么此时首先将a翻倍后,a = b,直接吃完就行。
所以该题一定有解。

2

在看到这到题的时候,脑子里肯定想到了要让a和b翻倍至数量接近之后,再一起吃,这样的话耗费的天数最小。可以举几个例子就能发现。

假设a<b;
则要让 a * 2 *n < = b ;n取最大值
当a翻倍到最大之后,再开始吃

代码(C++)

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;cin>>t;int a,b;while(t--){int res=0;cin>>a>>b;if(a>b)swap(a,b);while(true){if(a==b){res+=a;break;      }if(a*2<=b){a*=2;res++;continue;}a--;b--;res++;}cout<<res<<endl;}
}

牛客练习赛61 B 吃水果 题解相关推荐

  1. 牛客练习赛61 - B - 吃水果

    题目描述 最近米咔买了n个苹果和m个香蕉,他每天可以选择吃掉一个苹果和一个香蕉(必须都吃一个,即如果其中一种水果的数量为0,则他不能进行这个操作),或者使用魔法将某一种水果的数量翻倍. 现在米咔想吃西 ...

  2. 牛客练习赛61 B 吃水果

    题目描述 最近米咔买了n个苹果和m个香蕉,他每天可以选择吃掉一个苹果和一个香蕉(必须都吃一个,即如果其中一种水果的数量为0,则他不能进行这个操作),或者使用魔法将某一种水果的数量翻倍. 现在米咔想吃西 ...

  3. 牛客练习赛61-b题 吃水果

    题目链接 题目描述 最近米咔买了n个苹果和m个香蕉,他每天可以选择吃掉一个苹果和一个香蕉(必须都吃一个,即如果其中一种水果的数量为0,则他不能进行这个操作),或者使用魔法将某一种水果的数量翻倍. 现在 ...

  4. 牛客练习赛 61(待补F-点分治?)

    A. 打怪 先求出每次打死一只怪需要掉多少血,然后就直接算出能够打死多少只. #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) ...

  5. 牛客练习赛85 A~D题题解

    比赛链接:https://ac.nowcoder.com/acm/contest/11175 目录 A 科学家的模型 B 音乐家的曲调 C 哲学家的沉思 D 数学家的迷题 A 科学家的模型 模拟题,对 ...

  6. 牛客练习赛61 C 四个选项(并查集、DP、排列组合)难度⭐⭐⭐

    链接:https://ac.nowcoder.com/acm/contest/5026/C 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64 ...

  7. 牛客练习赛61 D 最短路变短了(最短路,反向最短路)难度⭐⭐⭐★

    最短路变短了 链接 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format:%lld 题目描述 给定一个有向带权图,其中 ...

  8. 牛客练习赛61 E 相似的子串(二分+哈希)难度⭐⭐⭐

    相似的子串 题目链接 时间限制:C/C++ 4秒,其他语言8秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format:%lld 题目描述 给定一个字符串,要求取 ...

  9. 牛客练习赛61 C 四个选项 dp\搜索+组合数学

    https://ac.nowcoder.com/acm/contest/5026/C 思路一:dpdpdp,首先通过并查集处理出所有的连通块(限制条件),然后用dpi,x,y,z,wdp_{i,x,y ...

最新文章

  1. 收藏丨机器学习顶级数据资源 Top 8 盘点
  2. 如何查询当前手机的cpu架构,so库导入工程又出异常了?
  3. Linux下监控文件系统
  4. sql select...for update是锁行还是锁表
  5. ERROR Streaming result set com.mysql.jdbc.RowDataDynamic@1d5a7f6 is still active. No statements may
  6. SSM整合Shiro进行登陆认证和授权详细配置
  7. consul删除无效服务
  8. 第二届(2009年)中国信息技术应用学术研讨会征文延期通知
  9. django博客项目7
  10. 安卓学习笔记15:使用安卓应用程序资源
  11. 再推新机!小米A3正式发布 售价249欧元起
  12. 服务器集群名称是否可修改,云服务器可以集群吗
  13. JavaScript语法详解:运算符和表达式
  14. Android从启动到程序运行整个过程的整理
  15. 个人计算机与工作站 服务器有什么区别,工作站与服务器有什么区别?
  16. 幼儿园体育游戏电子计算机教案,【小班体育活动】_小班体育教案100篇_小班体育游戏活动教案5篇...
  17. windowns 程序图标变白色
  18. python 3d绘图立方体_Python3使用turtle绘制超立方体图形示例
  19. 前后端分离的文件上传,上传zip或者rar压缩包(vue+springboot)。
  20. 关于U盘病毒(又名Autorun病毒)

热门文章

  1. 《用户体验要素—以用户为中心的Web开发》笔记
  2. 【笔记】得到-《薛兆丰的经济学课》模块二:成本的深义
  3. 【超简短的独立游戏开发教学】学习记录
  4. 05组团队项目-Alpha冲刺-1/6
  5. 分布式接口幂等性、分布式限流:Guava 、nginx和lua限流
  6. unite_来自Unite 2013的主题演讲
  7. c语言 时间函数,C 日期和时间函数
  8. 全栈开发工程师修炼指南
  9. KVM虚拟机添加虚拟硬盘
  10. vuejs2.0实战:仿豆瓣app项目,创建自定义组件tabbar