zoukankan      html  css  js  c++  java
  • HDU 5586 简单最大子段和变形

    Sum

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 1706    Accepted Submission(s): 874


    Problem Description
    There is a number sequence A1,A2....An,you can select a interval [l,r] or not,all the numbers Ai(lir) will become f(Ai).f(x)=(1890x+143)mod10007.After that,the sum of n numbers should be as much as possible.What is the maximum sum?
     
    Input
    There are multiple test cases.
    First line of each case contains a single integer n.(1n105)
    Next line contains n integers A1,A2....An.(0Ai104)
    It's guaranteed that n106.
     
    Output
    For each test case,output the answer in a line.
     
    Sample Input
    2 10000 9999 5 1 9999 1 9999 1
     
    Sample Output
    19999 22033
     
    Source
     水题= =,有一种操作能把此数列中的某一段区间的数字全部变为f(xi),也可以不使用这个操作,求可获得的n个数的最大值。
    我们不妨将f(xi)-xi处理出来表示变化值,从这个变化值数组中找到一段最大值就是能比SUMN(原始数列总和)最多增长多少,如果是一个负数按0处理表示不使用这个操作即可。好久没1A了尽管是水题还是>_<开森
     
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int N,M,i,j,k,t,a,b;
        while(cin>>N){int s=0,maxn=0,sumn=0;
            for(i=1;i<=N;++i){
                cin>>a;
                s+=a;
                b=(1890*a+143)%10007-a;
                sumn+=b;
                if(sumn>maxn) maxn=sumn;
                if(sumn<0) sumn=0;
            }
            cout<<s+maxn<<endl;
        }
        return 0;
    }

  • 相关阅读:
    ajax的post请求
    ajax的get请求
    浏览器缓存机制
    php和cookie
    php表单(2)
    php和表单(1)
    枚举for/in
    .Matrix-Beta冲刺的汇总博客
    .Matrix汇总博客
    小黄衫获得的感想
  • 原文地址:https://www.cnblogs.com/zzqc/p/7144556.html
Copyright © 2011-2022 走看看