zoukankan      html  css  js  c++  java
  • CF524B 题解

    一道纯贪心

    既然没有题解,我就发一篇


    这道题主要就是

    不能钻牛角尖

    题目中的拍照,一个人不能站或趴在另一个人身上(要这样想题目就难了不少)

    大致思路如下:

    枚举高度,算出对应的最小的宽(这里要用到贪心),乘一下,打擂台,就OK了

    关于枚举高度,那就从最大值开始递减可以尽量节约时间

    由于数据很弱,下面这个弱弱的代码就能AC

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
        int w,h;
    }a[1050];
    int n;
    long long ans=2e9;
    int main()
    {
        cin>>n;
        int max_h=0,min_h=2e9;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i].w>>a[i].h;
            max_h=max(max_h,a[i].h);
            max_h=max(max_h,a[i].w);
    
            min_h=min(min_h,a[i].h);
            min_h=min(min_h,a[i].w);
        }
    
        for(int i=max_h;i>=min_h;i--)
        {
            bool flag=false;
            int w=0;
            for(int j=1;j<=n;j++)
            {
                int maxn=max(a[j].h,a[j].w);
                int minn=min(a[j].h,a[j].w);
                if(minn>i)//两边长都超出此高度,直接break外层循环 
                {
                    flag=true;
                    break;
                }
                if(maxn>i) w+=maxn;//maxn不能做高,只能加进宽 
                else w+=minn;//两边长都在高度范围内,从贪心的角度,选小的加进去 
            }
            if(flag) break;
            long long t=w*i;
            ans=min(ans,t);
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    MongoDB Driver快速浏览
    字符串方法
    内置函数-sorted()和reversed()
    列表相关
    内置函数-eval()
    内置函数-zip
    内置函数-map
    列表
    内置函数-enumerate
    选择结构与循环结构
  • 原文地址:https://www.cnblogs.com/zhouzhihao/p/11216118.html
Copyright © 2011-2022 走看看