• 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的意义是过不去才去加油。

  • 相关阅读:
    CentOS python升级到3.5时yum报错
    CentOS 7将Python 2.X.X升级到Python 3.X.X
    PL SQL Developer报错框乱码
    php遍历目录下文件,并读取内容
    Linux常用命令
    CentOS6.4安装go环境
    CentOS/RedHat rpm方式安装Apache2.2
    在Wamp 添加站点和域名
    印象笔记的导入与导出
    用csv文件读写一个人脸数据库,实现能够并显示对应的人脸结果
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12196294.html
Copyright © 2020-2023  润新知