牛客练习赛61 B 吃水果 题解
链接: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 吃水果 题解相关推荐
- 牛客练习赛61 - B - 吃水果
题目描述 最近米咔买了n个苹果和m个香蕉,他每天可以选择吃掉一个苹果和一个香蕉(必须都吃一个,即如果其中一种水果的数量为0,则他不能进行这个操作),或者使用魔法将某一种水果的数量翻倍. 现在米咔想吃西 ...
- 牛客练习赛61 B 吃水果
题目描述 最近米咔买了n个苹果和m个香蕉,他每天可以选择吃掉一个苹果和一个香蕉(必须都吃一个,即如果其中一种水果的数量为0,则他不能进行这个操作),或者使用魔法将某一种水果的数量翻倍. 现在米咔想吃西 ...
- 牛客练习赛61-b题 吃水果
题目链接 题目描述 最近米咔买了n个苹果和m个香蕉,他每天可以选择吃掉一个苹果和一个香蕉(必须都吃一个,即如果其中一种水果的数量为0,则他不能进行这个操作),或者使用魔法将某一种水果的数量翻倍. 现在 ...
- 牛客练习赛 61(待补F-点分治?)
A. 打怪 先求出每次打死一只怪需要掉多少血,然后就直接算出能够打死多少只. #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) ...
- 牛客练习赛85 A~D题题解
比赛链接:https://ac.nowcoder.com/acm/contest/11175 目录 A 科学家的模型 B 音乐家的曲调 C 哲学家的沉思 D 数学家的迷题 A 科学家的模型 模拟题,对 ...
- 牛客练习赛61 C 四个选项(并查集、DP、排列组合)难度⭐⭐⭐
链接:https://ac.nowcoder.com/acm/contest/5026/C 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64 ...
- 牛客练习赛61 D 最短路变短了(最短路,反向最短路)难度⭐⭐⭐★
最短路变短了 链接 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format:%lld 题目描述 给定一个有向带权图,其中 ...
- 牛客练习赛61 E 相似的子串(二分+哈希)难度⭐⭐⭐
相似的子串 题目链接 时间限制:C/C++ 4秒,其他语言8秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format:%lld 题目描述 给定一个字符串,要求取 ...
- 牛客练习赛61 C 四个选项 dp\搜索+组合数学
https://ac.nowcoder.com/acm/contest/5026/C 思路一:dpdpdp,首先通过并查集处理出所有的连通块(限制条件),然后用dpi,x,y,z,wdp_{i,x,y ...
最新文章
- subplot subplots绘制子图
- js bom window对象
- 百万并发中间件系统的内核设计看Java并发性能优化
- USACO 2.3 货币系统(背包/生成函数)
- jquery div拖动效果示例代码
- qq显示下线通知什么意思_最近时不时地收到QQ下线的通知
- C# 课堂总结2-数据类型及转换方式
- 安卓软件改名器_自动点击屏幕的软件有哪些?-手机自动点击软件下载
- Google全球服务器根域名的IP地址
- jquery has 返回拥有匹配指定选择器的一个或多个元素在其内的所有元素
- 影子系统PowerShadow v2.6.0511中文破解版
- 现代计算机的工作原理是什么和什么,计算机的工作原理是什么
- stc单片机c语言程序头文件(stc12c5a60s2.h,stc12c5a60s2头文件在keil中没法用?
- JVAV SE学习总结(01)
- 面试字节跳动经历。。。
- 计算机文档添加书签,小学计算机——制作可以跳转的书签教案
- 那位整天嚷嚷要辞职的前台,两个月过去了她还在公司里做前台
- NYOJ1036 非洲小孩
- {渡一教育}成哥HTML课程干货笔记整--2
- 网络交换机接口以及级联【转自微信公众号第一监控】