NC5026B

吃水果

https://ac.nowcoder.com/acm/contest/5026/B

题意

你有n个苹果和m个香蕉,你可以花一天时间使得其中一种水果翻倍,或者花一天时间同时吃掉1个苹果和1个香蕉,苹果和香蕉必须同时吃掉。
求最少多少天可以吃完?

思路

贪心:我们翻倍要做到既让水果得到最大程度的补充,又不能超过,则进行翻倍。
这里苹果和香蕉是等地位的,为了方便我们先把大的给到,小的给到,
看了眼官方题解,是可以用数学公式优化到每次的,但是这题数据范围不大,直接这样模拟也能过。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const double eps = 1e-8;
const int NINF = 0xc0c0c0c0;
const int INF  = 0x3f3f3f3f;
const ll  mod  = 1e9 + 7;
const ll  maxn = 1e6 + 5;

ll n,m;

void solve(){
    cin>>n>>m;
    if(n<m) swap(n,m);
    ll cnt=0;
    for(;n>0||m>0;cnt++){
        while(2*m<=n){
            m=2*m;
            cnt++;
        }
        n--;m--;
    }
    cout<<cnt<<'\n';
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int T; cin>>T;
    while(T--){
        solve();
    }
    return 0;
}
全部评论

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务