码迷,mamicode.com
首页 > 其他好文 > 详细

CF 626C [Block Towers] 贪心

时间:2017-04-16 20:23:38      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:最小值   数学   无限   int   return   amp   大于等于   ret   cst   

题目链接:http://codeforces.com/problemset/problem/626/C

题目大意: 有n个人用高度为2的砖往上搭,有m个人用高度为3的砖往上搭。每个人可用的砖块数是无限的,但是要求每个人搭的塔的高度,求所有可行情况中塔的最高高度的最小值。

关键思想:贪心,当且仅当高度为6的倍数时,他们的高度会相同。这时必须有一个人搭更高的,哪个人呢?此时就贪心;另外一种思想是数学的,首先答案x一定是大于等于2n也是大于等于3m的(有6的倍数取等号)对吧,而且m+n<=(x/2+x/3-x/6)【仔细想象是不是这样】。通过这个不等式求出符合要求的x的最小值。

代码如下:

//贪心
#include <iostream>
using namespace std;

int main(){
    long long n,m;
    while(cin>>n>>m){
        long long d1=2*n,d2=3*m;
        for(long long i=6;i<=min(d1,d2);i+=6){//i是6的倍数,它比终点小说明还有重复的情况。
            if(d1<=d2){
                d1+=2;
            }else{
                d2+=3;
            }//贪心
        }
        cout<<max(d1,d2)<<endl;
    }

    return 0;
}

  

#include <cstdio>

int main()
{
	int i, a, b;
	scanf("%d%d", &a, &b);
	for (i = 0;; i++) if (i / 2 >= a && i / 3 >= b && i / 2 + i / 3 - i / 6 >= a + b) break;
	printf("%d", i);
}

  

CF 626C [Block Towers] 贪心

标签:最小值   数学   无限   int   return   amp   大于等于   ret   cst   

原文地址:http://www.cnblogs.com/G-M-WuJieMatrix/p/6719628.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!