zoukankan      html  css  js  c++  java
  • 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的意义是过不去才去加油。

  • 相关阅读:
    Cocos2Dx for XNA类解析(1): CCApplication
    struts2动态调用action的方法
    python导出依赖包
    python 字符串split()方法
    struts2使用通配符调用action
    python3重新编译
    Jquery中html()、text()、val()的使用和区别
    Javascript写在<body>和<head>中的区别
    设计模式Design Pattern(2)单例模式
    设计模式Design Pattern(1)简介
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12196294.html
Copyright © 2011-2022 走看看