BestCoder Round #64 (div.2) 1002 Sum HDU 5586 聯機算法


Sum

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

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


出題人:{A}_{i}=f({A}_{i})-{A}_{i}Ai=f(Ai)Ai,然後求一遍最大連續子序列和就能知道最多能增加的值。


聯機算法 :

#include
#include
#include
using namespace std;
int main()
{
    int n,x,s,sum,maxn,y;
    while(~scanf("%d",&n))
    {
        maxn=sum=s=0;
        for(int i=0; isum?maxn:sum;
        }
        printf("%d\n",s+maxn);
    }
    return 0;
}


發佈了119 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章