CodeForces 626 C. Block Towers(贪心)

Description
n个小孩搭高度为2k的塔,m个小孩搭高度为3k的塔,每个小孩的塔高不同,问这群小孩搭的最高塔塔高的最小值
Input
两个整数n,m(0<=n,m<=1000000,n+m>0)
Output
输出这群小孩搭的最高塔塔高的最小值
Sample Input
3 2
Sample Output
8
Solution
贪心,问题转化为求一个只由2a,3b构成的数列中第n+m大的数(a,b=0,1,2…),令n=2n,m=3m后每次比较n和m的大小,n小就给n加2,m小就给m加3,操作min(n,m)/6次(2,4,6,…,2n和3,6,9,…3m重复了这么多次)之后输出n和m的最大值即可
Code

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        n*=2,m*=3;
        for(int i=1;i<=min(n,m)/6;i++)
            if(n>m)m+=3;
            else n+=2;
        printf("%d\n",max(n,m));    
    }   
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值