zoukankan      html  css  js  c++  java
  • 「日常训练」「小专题·USACO」 Barn Repair(1-4)

    题意

    之后补。

    分析

    这题同样也很精巧。我们不妨思考一下,如果只允许用一块木板,那么要购买多少距离?是整个的距离吗?不是,是从第一个到最后一个(哈哈哈哈哈哈哈)。但是,不包括第一个的“左边”和最后一个的“右边”。只允许用两块的时候发生了什么变化?可以想见,最好的解是将最宽的那个间隔去掉。以此类推。
    以这样的思路就可以得到题目的解法。问题在于各种各样的细节(again):样例数据里面给的牛棚按照顺序但是实际数据它未作保证;然后牛棚的距离记得-1,因为牛棚本身需要盖木板(也就是说,当木板限制大于牛数目时,最右解是每个牛棚盖长度为1的木板,也就是n)……
    这是典型的贪心思想。

    代码

    /*
    ID: samhx1
    LANG: C++14
    TASK: barn1
    */
    #include <bits/stdc++.h>
    #define MP make_pair
    #define PB push_back
    #define fi first
    #define se second
    #define ZERO(x) memset((x), 0, sizeof(x))
    #define ALL(x) (x).begin(),(x).end()
    #define rep(i, a, b) for (ll i = (a); i <= (b); ++i)
    #define per(i, a, b) for (ll i = (a); i >= (b); --i)
    #define QUICKIO                  
        ios::sync_with_stdio(false); 
        cin.tie(0);                  
        cout.tie(0);
    using namespace std;
    using ll = long long;
    using ull = unsigned long long;
    using pi = pair<ll,ll>;
    
    int main()
    {
        freopen("barn1.in","r",stdin);
        freopen("barn1.out","w",stdout);
    
        int stall[205];
        int m,s,c;
        cin>>m>>s>>c;
        if(m>=c) { cout<<c<<endl; return 0; }
        rep(i,1,c)
            cin>>stall[i];
        sort(stall+1,stall+c+1);
    
        stall[0]=0;
        int delta[205];
        rep(i,1,c)
            delta[i]=stall[i]-stall[i-1]-1;
        sort(delta+2,delta+c+1);
    
        int ans=0;
        rep(i,0,m-2)
            ans+=delta[c-i];
        cout<<s-ans-(stall[1]-1)-(s-stall[c])<<endl;
    
        return 0;
    }
    如非注明,原创内容遵循GFDLv1.3发布;其中的代码遵循GPLv3发布。
  • 相关阅读:
    markDown 语法学习
    flutter 自定义输入框组件
    flutter 学习零碎知识点01
    如何让模拟的json数据接口能够正常的在手机上有效果
    react高阶组件的使用
    如何把原生小程序项目合并的mpvue项目中
    如何把一个vue组件改为ionic/angular组件
    浅析MySQL中change与modify的区别
    如何在电脑上配置两个tomcat
    警告-SetPropertiesRule Server Service Engine Host Context
  • 原文地址:https://www.cnblogs.com/samhx/p/9652060.html
Copyright © 2011-2022 走看看