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

  • 相关阅读:
    Azure 虚拟机安全加固整理
    AzureARM 使用 powershell 扩容系统磁盘大小
    Azure Linux 云主机使用Root超级用户登录
    Open edX 配置 O365 SMTP
    powershell 根据错误GUID查寻错误详情
    azure 创建redhat镜像帮助
    Azure Powershell blob中指定的vhd创建虚拟机
    Azure Powershell 获取可用镜像 PublisherName,Offer,Skus,Version
    Power BI 连接到 Azure 账单,自动生成报表,可刷新
    Azure powershell 获取 vmSize 可用列表的命令
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12196294.html
Copyright © 2011-2022 走看看