zoukankan      html  css  js  c++  java
  • [xdoj]1299&1300朱神的烦恼 朱神的序列

    http://acm.xidian.edu.cn/problem.php?id=1299

    1.第一道题简单的很,数据范围最多只有1e4,对于数组中的每一个元素进行两个for循环,i=0;i<n;i++ j=i+1;j<n;j++这样就写了一个O(n²)的算法,1e8完全可以在1s内解决。

    http://acm.xidian.edu.cn/problem.php?id=1300

    第二题就没这么简单了,扩大了数据范围到1e5,这样的话你再写循环1e10肯定超时。这就要想出新的办法。后缀最小值。

    先预处理出后缀最小值edMin数组,然后通过ans=max(ans,ans-edMin[i])就可以做出求一个序列中的第i号序列和后面最小的序列值的差的操作,利用迭代求出最小值即是答案。

    对于这两道题,都有一个共同特别容易错的点,那就是ans一开始设为0肯定会错,因为有可能i后的数字全都比i大,所以ans要设为负的最大值-1e9-7就可以。

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 1e5+7;
    int a[maxn];
    int edMin[maxn];
    int min(int a, int b)
    {
        return a<=b ? a : b;
    }
    int max(int a, int b)
    {
        return a>= b ? a : b;
    }
    int main()
    {
        int T;
        scanf("%d", &T);
        while (T--)
        {
            int n;
            scanf("%d", &n);
            int i;
            for (i = 0; i < n; i++)
            {
                scanf("%d", &a[i]);
            }
            for (i = n - 1; i >= 0; i--)
            {
                if (i == n - 1)
                {
                    edMin[i] = a[i];
                }
                else
                {
                    edMin[i] = min(a[i], edMin[i + 1]);
                }
            }
            int ans = -1000000005;
            /*for (i = 0; i < n; i++)
            {
                printf("%d ", edMin[i]);
            }*/
            for (i = 0; i < n-1; i++)
            {
                ans = max(ans,a[i] - edMin[i+1]);
            }
            printf("%d
    ",ans);
        }
    }
  • 相关阅读:
    use paramiko to connect remote server and execute command
    protect golang source code
    adjust jedi vim to python2 and python3
    install vim plugin local file offline
    add swap file if you only have 1G RAM
    datatables hyperlink in td
    django rest framework custom json format
    【JAVA基础】网络编程
    【JAVA基础】多线程
    【JAVA基础】String类的概述和使用
  • 原文地址:https://www.cnblogs.com/legendcong/p/9107498.html
Copyright © 2011-2022 走看看