hdu 5586 Sum【dp最大子段和】

时间:2021-08-25 17:00:44

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586

Sum

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

Problem Description
There is a number sequence Ahdu 5586 Sum【dp最大子段和】1hdu 5586 Sum【dp最大子段和】,Ahdu 5586 Sum【dp最大子段和】2hdu 5586 Sum【dp最大子段和】....Ahdu 5586 Sum【dp最大子段和】nhdu 5586 Sum【dp最大子段和】hdu 5586 Sum【dp最大子段和】

,you can select a interval [l,r] or not,all the numbers Ahdu 5586 Sum【dp最大子段和】ihdu 5586 Sum【dp最大子段和】(l≤i≤r)hdu 5586 Sum【dp最大子段和】

will become f(Ahdu 5586 Sum【dp最大子段和】ihdu 5586 Sum【dp最大子段和】)hdu 5586 Sum【dp最大子段和】

.f(x)=(1890x+143)mod10007hdu 5586 Sum【dp最大子段和】

.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.(1≤n≤10hdu 5586 Sum【dp最大子段和】5hdu 5586 Sum【dp最大子段和】)hdu 5586 Sum【dp最大子段和】

Next line contains n integers Ahdu 5586 Sum【dp最大子段和】1hdu 5586 Sum【dp最大子段和】,Ahdu 5586 Sum【dp最大子段和】2hdu 5586 Sum【dp最大子段和】....Ahdu 5586 Sum【dp最大子段和】nhdu 5586 Sum【dp最大子段和】hdu 5586 Sum【dp最大子段和】

.(0≤Ahdu 5586 Sum【dp最大子段和】ihdu 5586 Sum【dp最大子段和】≤10hdu 5586 Sum【dp最大子段和】4hdu 5586 Sum【dp最大子段和】)hdu 5586 Sum【dp最大子段和】

It's guaranteed that ∑n≤10hdu 5586 Sum【dp最大子段和】6hdu 5586 Sum【dp最大子段和】hdu 5586 Sum【dp最大子段和】

.

 
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
 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#define MAX 100000
#define LL long long
using namespace std;
LL fun(LL x)
{
return ((1890*x)%10007+143%10007)%10007;
}
int main()
{
int n,m,j,i,k;
int s[MAX],a[MAX],b[MAX];
while(scanf("%d",&n)!=EOF)
{
int sun=0;
for(i=1;i<=n;i++)
{
scanf("%d",&s[i]);
a[i]=fun(s[i]);//储存 f(x);
b[i]=a[i]-s[i];//储存f(x)和x的差值
sun+=s[i];
}
int sum=0;
int Max=0;
for(i=1;i<=n;i++)//最大子段和代码
{
if(sum<=0)
sum=b[i];
else
sum+=b[i];
Max=max(Max,sum);//求出最大子段
}
printf("%d\n",sun+Max);
}
return 0;
}