zoukankan      html  css  js  c++  java
  • 【模板】三分——cf1355E

    发现自己以前的三分模板有问题。。换个标准的!

    //整数三分
    int l = 1,r = 100;
    while(l < r) {
        int lmid = l + (r - l) / 3;
        int rmid = r - (r - l) / 3;
        lans = f(lmid),rans = f(rmid);
        // 求凹函数的极小值
        if(lans <= rans) r = rmid - 1;
        else l = lmid + 1;
        // 求凸函数的极大值
        if(lasn >= rans) l = lmid + 1;
        else r = rmid - 1;
    }
    // 求凹函数的极小值
    cout << min(lans,rans) << endl;
    // 求凸函数的极大值
    cout << max(lans,rans) << endl;
    //浮点三分
    const double EPS = 1e-9;
    while(r - l < EPS) {
        double lmid = l + (r - l) / 3;
        double rmid = r - (r - l) / 3;
        lans = f(lmid),rans = f(rmid);
        // 求凹函数的极小值
        if(lans <= rans) r = rmid;
        else l = lmid;
        // 求凸函数的极大值
        if(lans >= rans) l = lmid;
        else r = rmid;
    }
    // 输出 l 或 r 都可
    cout << l << endl;

    本题代码

    #include<bits/stdc++.h>
    using namespace std;
    #define N 200005
    #define ll long long
    
    ll n,a,r,m,h[N];
    
    ll f(ll x){//所有高度变成x
        ll c1=0,c2=0; 
        for(int i=1;i<=n;i++) 
            if(h[i]<=x)c1+=x-h[i];
            else c2+=h[i]-x;
        ll res=0;
        if(m<a+r){
            ll t=min(c1,c2);
            res+=m*t;
            c1-=t;c2-=t;
        }
        res+=a*c1+r*c2;
        return res;
    }
    
    int main(){
        cin>>n>>a>>r>>m;
        for(int i=1;i<=n;i++)cin>>h[i];
        sort(h+1,h+1+n);
        ll L=0,R=h[n],midl,midr,ans=0;
        while(L<R){
            midl=L+(R-L)/3;
            midr=R-(R-L)/3;
            ll res1=f(midl),res2=f(midr);
            if(res1<=res2){
                ans=res1;R=midr-1;
            }else {
                ans=res2;L=midl+1;
            }
        }
        cout<<ans<<'
    ';
    }
  • 相关阅读:
    [转][html5]网页横屏
    [转][EasyUI]扩展 DateBox
    [转][C#]枚举的遍历Enum
    [转][C#]单例模式之懒加载
    [C#][Quartz]添加监听器
    [C#][Quartz]帮助类
    [转]Win 10 的 Win 按键没反应
    转来的--轻松自动化---selenium-webdriver(python) (七)---定位iframe——转来的
    安装charles
    遇到的问题汇总
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12916489.html
Copyright © 2011-2022 走看看