• expedition(poj2431_优先队列)


    1,我奇奇怪怪。必须得刷题啊。

    2,代码不难懂,但是你能想到这个东西就挺nbl .

    #include<iostream>
    #include<queue>
    using namespace std;
    priority_queue<int> que;
    int n,l,p,a[1005],b[1005];
    int ans,pos,tank;
    int main(){
        cin>>n>>l>>p;
        for(int i=0;i<n;i++){cin>>a[i];cin>>b[i];
        }
        a[n]=l;
        b[n]=0;
        n++;
        ans=0;
        pos=0;
        tank=p;
        for(int i=0;i<n;i++)
        {
            int d=a[i]-pos;//目前该车距离加油站的位置。 
            while(tank-d<0)
            {
                if(que.empty())
                {
                    puts("-1");
                    break;
                }
                tank+=que.top();
                que.pop();
                ans++;
            }
            tank-=d;
            pos=a[i];
            que.push(b[i]);
        }
        cout<<ans<<endl;
    } 

    3,额一遍过。。似乎比dp要那啥一些。

    4,这个题的思维挺重要,建模也很重要。

    在到达i加油站时,可认为在之后任意时刻都可以加这里的油。。

    感觉我前面做的比如a[i]=l,b[i]=0,感觉是在补这个模型。以及pos=0,感觉题目就是一个大部分都完成了的模型,

    你就需要补一下模型,然后按着题目往下做就可以了。

    一个数据也不一定对!!!!我用脑子想了一遍发现果然有个地方有点问题。

    5,那就开始费大和费小了,

    费大主要是你要类比出这个思想,

    经过即拥有。我用小说这里面的也不好套。

    这个弄反你怎么解释。不行就模拟呗。,,

    你这相当于每次都加油。。肯定算不出最小值的。

    #include<iostream>
    #include<queue>
    using namespace std;
    int n,l,p,a[1005],b[1005];
    int ans,pos,tank;
    priority_queue<int> que;
    int main(){
        cin>>n>>l>>p;
        for(int i=0;i<n;i++){cin>>a[i];cin>>b[i];
        }
        a[n]=l;
        b[n]=100;
        n++;
        ans=0;
        pos=0;
        tank=p;
        for(int i=0;i<n;i++)
        {
            int d=a[i]-pos+pos-pos;
            while(tank-d>=0)
            {
                tank-=d;
                pos=a[i];
                que.push(b[i]);
            }
            if(que.empty())
                {
                    puts("-1");
                    break;
                }
                tank+=que.top();
                que.pop();
                ans++;
            
        }
        cout<<ans<<endl;
    }

    6,那让我模拟一下正常的。while的意义是过不去才去加油。

  • 相关阅读:
    使用nexus 管理pip 私有包
    gitingore && opensource license 自动生成的网站
    lua-resty-qless-web UI 界面运行
    自定义pip 包开发简单说明
    ethr 微软开源的tcp udp http 网络性能测试工具
    openresty 集成lua-resty-mail +smtp2http 扩展灵活的mail 服务
    masterlab 敏捷项目管理工具
    luarocks 自定义包发布试用
    vorpal 又一个方便的cli 开发包
    gogs wekan 集成试用
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12196294.html
Copyright © 2020-2023  润新知