码迷,mamicode.com
首页 > 编程语言 > 详细

集训第四周(高效算法设计)M题 (扫描法)

时间:2015-08-05 20:07:36      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

原题:UVA11078

 

题意:给你一个数组,设a[],求一个m=a[i]-a[j],m越大越好,而且i必须小于j

怎么求?排序?要求i小于j呢。枚举?只能说超时无上限。所以遍历一遍数组,设第一个被减数为a【0】,之后遇到比a【0】大的数就更新它,再拿这个被减数去减数组中的每一个元素,同时也要不断地更新这个m值。

#include"iostream"
#include"set"
#include"cstring"
#include"cstdio"
#include"algorithm"
using namespace std;
const int maxn=100000+10;
int a[maxn];
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        int x=a[0];
        int ans=-1;
        for(int i=1;i<n;i++)
          {
            ans=max(x-a[i],ans);
            x=max(a[i],x);
          }
        cout<<ans<<endl;
    }
    return 0;
}

 

集训第四周(高效算法设计)M题 (扫描法)

标签:

原文地址:http://www.cnblogs.com/zsyacm666666/p/4705563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!