zoukankan      html  css  js  c++  java
  • HDU5586 最大连续和 xingxing在努力

      这道题的意思是给你一串数字, 每一个数字可以通过一个公式转换成其他的数, 你可以转换一个连续区间的数, 让这一串数字的和最大。。只需要做一个小小的转换就可以转化问题为最大连续和。   具体见代码, 不过需要注意最大连续和的递推式是d[i] = max(c[i], d[i-1]+c[i])不要弄错了。。代码如下:

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    const int inf = 0x3f3f3f3f;
    int A[100000 + 100];
    int F[100000 + 100];
    int C[100000 + 100];
    
    int d[100000 + 100];
    int main()
    {
        int n;
        while(scanf("%d", &n) == 1)
        {
            int sum = 0;
            for(int i=0; i<n; i++)
            {
                scanf("%d", &A[i]);
                F[i] = (1890*A[i]+143)%10007;
                C[i] = F[i] - A[i];               //求出转化后的数字和原序列差,然后求解最长连续子序列即可
                sum += A[i];
            }
            for(int i=0; i<n; i++)
                d[i] = -inf;
            d[0] = C[0];
            int max1 = d[0];
            for(int i=1; i<n; i++)
            {
                d[i] = max(C[i], d[i-1]+C[i]);
                max1 = max(max1, d[i]); 
            }
            if(max1 >= 0)                      //这里注意max1<0的情况
                printf("%d
    ", sum+max1);
            else 
                printf("%d
    ", sum);
        }
        return 0;
    }
  • 相关阅读:
    病毒软件测试代码
    如何将WIN安全设置重置回默认值
    今天值班非常不爽。
    FTP命令(2)
    WORD操作
    DELPHI事务
    DELPHI一些常用的技巧
    钩子学习心得
    (转 )Delphi指针如何指向使用with开域语句创建的无名组件对象
    WebBrowser 操作记要 (DELPHI)
  • 原文地址:https://www.cnblogs.com/xingxing1024/p/5003721.html
Copyright © 2011-2022 走看看