zoukankan      html  css  js  c++  java
  • Codeforces Round #266 (Div.2) B Wonder Room --枚举

    题意:给出一个两边长为a,b的矩形,要求增加a和增加b使a*b>=6*n且a*b最小。

    解法:设新的a,b为a1,b1,且设a<b,那么a<=a1<=ceil(sqrt(6*n)),那么我们可以枚举a1,然后算出b1,如果b1<b,那么b1 = b,然后算出面积,取所有面积的最小值不就可以了,然后再枚举一次b1,处理与之相同即可。

    复杂度O(sqrt(n))

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #define lll __int64
    using namespace std;
    
    int main()
    {
        lll n,a,b;
        lll mini,a1,b1;
        while(scanf("%I64d%I64d%I64d",&n,&a,&b)!=EOF)
        {
            mini = (1LL<<62);
            lll sum = (lll)6*n;
            for(lll i=a;i<=a+50000LL;i++)
            {
                lll tb = sum/i + (sum%i!=0);
                tb = max(b,tb);
                lll tarea = i*tb;
                if(tarea < mini)
                {
                    mini = tarea;
                    a1 = i;
                    b1 = tb;
                }
            }
            for(lll i=b;i<=b+50000LL;i++)
            {
                lll ta = sum/i + (sum%i!=0);
                ta = max(a,ta);
                lll tarea = i*ta;
                if(tarea < mini)
                {
                    mini = tarea;
                    a1 = ta;
                    b1 = i;
                }
            }
            cout<<mini<<endl<<a1<<" "<<b1<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Celery(异步任务,定时任务,周期任务)
    SQLAlchemy的应用创建
    SQLAlchemy多对多
    SQLAlchemy
    app开发-2
    app开发-3
    app开发-1
    MongoDB-pymongo
    MongoDB-增删改查
    MongoDB-数据类型
  • 原文地址:https://www.cnblogs.com/whatbeg/p/3969514.html
Copyright © 2011-2022 走看看