• UVa11078 Open Credit System


    题目大意

    给定一个长度为N的序列A,找出两个整数A[i]和A[j](i<j),使得A[i]-A[j]尽量大

    题解

    最简单的做法就是直接用二重循环枚举A[i]和A[j],不过对于N=10000的数据量显然会超时。对于每个j,我们要找到最大的A[i],只要

    在枚举j的时候顺便用一个变量维护一下A[i]的最大值就行,这样时间复杂度就由O(N^2)降低到O(N)了。

    代码

    #include<stdio.h>
    #include<stdlib.h>
    #define MAXN 100005
    #define INF 0x7fffffff
    long a[MAXN];
    long MAXS;
    long max(long a,long b)
    {
        return a>b?a:b;
    }
    int main(void)
    {
        long n,i,ans,T;
        scanf("%ld",&T);
        while(T--)
        {
            scanf("%ld",&n);
            for(i=0;i<n;i++)
            scanf("%ld",&a[i]);
            ans=-INF;
            MAXS=a[0];
            for(i=1;i<n;i++)
            {
            ans=max(ans,MAXS-a[i]);
            if(a[i]>MAXS)
            MAXS=a[i];
            }
            printf("%ld\n",ans);
        }
        return 0;
    }
  • 相关阅读:
    基本数据结构:链表(list)
    字符串函数
    TCHAR
    开源库链接
    视频 链接
    tabbar
    加密
    安全类链接,https
    资本
    审核 -链接 - 发布证书
  • 原文地址:https://www.cnblogs.com/zjbztianya/p/2998989.html
Copyright © 2020-2023  润新知