zoukankan      html  css  js  c++  java
  • CF734C Anton and Making Potions (二分)

    这道题很明显需要是暴力枚举第一维并且二分第二维,因为第二维是单调的

    有几个坑点,首先可以都不用,其次可以只用一个,另外,我在做这题犯了一个巨大的错误,就是我光顾着判断二分情况的花费有没有超,却忘记了第一步的花费也可能超过要求

    因此这里要注意一下

    #include<iostream>
    #include<vector>
    #include<algorithm>
    #include<cmath>
    #include<cstdio>
    #include<queue>
    #include<map>
    #include<cstring>
    #include<string>
    using namespace std;
    typedef long  long ll;
    const int N=2e5+10;
    struct node{
        ll a;
        ll b;
    }s[N];
    struct qi{
        ll d;
        ll c;
    }q[N];
    int main(){
        int i;
        ll n,m,k;
        cin>>n>>m>>k;
        ll x,h;
        cin>>x>>h;
        ll res=(ll)x*n;
        for(i=1;i<=m;i++){
            scanf("%lld",&s[i].a);
        }
        for(i=1;i<=m;i++){
            scanf("%lld",&s[i].b);
        }
        for(i=1;i<=k;i++){
            scanf("%lld",&q[i].c);
        }
        for(i=1;i<=k;i++){
            scanf("%lld",&q[i].d);
        }
        ll tmp;
        ll ans=res;
        s[0].a=x;
        s[0].b=0;
        for(i=0;i<=m;i++){
            int cost=s[i].b;
            if(cost>h)
                continue;
            int l=0,r=k;
            while(l<r){
                ll mid=l+r+1>>1;
                if(cost+q[mid].d<=h){
                    l=mid;
                }
                else
                    r=mid-1;
            }
            tmp=(n-q[l].c)*s[i].a;
            ans=min(ans,tmp);
        }
        cout<<ans<<endl;
        return 0;
    }
    View Code
  • 相关阅读:
    洛谷3163 CQOI2014危桥 (最大流)
    UVA557 汉堡 Burger
    洛谷1950 长方形 (单调栈)
    洛谷3317 SDOI2014重建(高斯消元+期望)
    洛谷4035 JSOI2008球形空间产生器 (列柿子+高斯消元)
    test1
    test
    background
    bzoj1075
    bzoj1074
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/12422723.html
Copyright © 2011-2022 走看看