zoukankan      html  css  js  c++  java
  • 气温预测

    气温预测

    Description

    现有一个n天的气温表, 请你预测对于每一天,最迟多少天后可以升温(从现在到气温表中最后大于当前温度的那天)。如果不能升温,则当前输出0。

    Input

    输入第一行为一个n代表天数。

    第二行为n个整数,第i个代表第i天的气温a[i]。

    1 <= n <= 1e6

    0 < a[i] < 1e6.

    Output

    输出一行n个数,第i个数代表对于第i天,最迟多少天后可以升温,如果不能升温,输出0。

    Sample Input 1 

    5
    1 2 5 3 2

    Sample Output 1

    4 2 0 0 0

    Hint

    样例中第一天气温为1,最后一个大于1的位置在第五天,所以输出5 - 1 = 4。

    第三天气温为5,之后没有比5大的数,所以输出0。

    对a数组按温度排个升序然后维护每个数组元素后面最大天数,还要注意排序时温度相同的时候,天数小的要排在后面,因为若天数大的排在后面,则会影响前面天数小的的答案

    #include<bits/stdc++.h>
    using namespace std;
    struct node
    {
        int wd,id;
    }a[1000005];
    int ans[1000005]={0};
    bool cmp(const node&b,const node&c)
    {
        if(b.wd==c.wd)
            return b.id>c.id;
        return b.wd<c.wd;
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&(a[i].wd));
            a[i].id=i;
            ans[i]=0;
        }
        sort(a+1,a+n+1,cmp);
        int maxid=0;
        //for(int i=1;i<=n;i++)
            //printf("%d %d
    ",a[i].wd,a[i].id);
        for(int i=n;i>=1;i--)
        {
            if(a[i].id<maxid)
            {
                ans[a[i].id]=maxid-a[i].id;
            }
            else
            {
                maxid=a[i].id;
    
            }
        }
        for(int i=1;i<=n;i++)
            cout<<ans[i]<<" ";
        return 0;
    }
    
  • 相关阅读:
    C# 执行bat文件 PHP
    windows服务操作 sc批处理 PHP
    HTML 彩虹 PHP
    C# 简易日志记录类 PHP
    C# 读写INI文件 PHP
    .NET Framework PHP
    序列号备忘 PHP
    获取浏览器版本信息
    数据库中Image字段存储读取数据
    [转]装机推荐 5000元铸造最强游戏平台
  • 原文地址:https://www.cnblogs.com/eason9906/p/11754979.html
Copyright © 2011-2022 走看看