hdoj 5586 Sum 【dp】
来源:互联网 发布:linux用户账号新建 编辑:程序博客网 时间:2024/05/16 06:17
Sum
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 60 Accepted Submission(s): 40
Problem Description
There is a number sequence A1,A2....An ,you can select a interval [l,r] or not,all the numbers Ai(l≤i≤r) 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.(1≤n≤105)
Next line contains n integersA1,A2....An .(0≤Ai≤104)
It's guaranteed that∑n≤106 .
First line of each case contains a single integer n.
Next line contains n integers
It's guaranteed that
Output
For each test case,output the answer in a line.
Sample Input
210000 999951 9999 1 9999 1
Sample Output
1999922033
题意:给定n个元素的序列a[],f[i] = (1890*a[i]+143) % 10007,你可以选择改变任意一个连续的区间(或者不改变),使区间里面的a[]变成f[],问这个序列的最大元素和。
思路:求出f[]-a[]的代价v[],然后找出最大连续子序列和就行了。
AC代码:
#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <map>#include <vector>#define INF 0x3f3f3f#define eps 1e-8#define MAXN (100000+10)#define MAXM (100000)#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld", &a)#define Rf(a) scanf("%lf", &a)#define Rs(a) scanf("%s", a)#define Pi(a) printf("%d\n", (a))#define Pf(a) printf("%.2lf\n", (a))#define Pl(a) printf("%lld\n", (a))#define Ps(a) printf("%s\n", (a))#define W(a) while(a--)#define CLR(a, b) memset(a, (b), sizeof(a))#define MOD 1000000007#define LL long long#define lson o<<1, l, mid#define rson o<<1|1, mid+1, r#define ll o<<1#define rr o<<1|1using namespace std;LL F(LL x){ return (1890 * x + 143) % 10007;}LL a[MAXN], f[MAXN];int main(){ int n; while(Ri(n) != EOF) { LL ans = 0; for(int i = 0; i < n; i++) { Rl(a[i]); ans += a[i]; f[i] = F(a[i]) - a[i]; } LL sum = 0, s = 0; for(int i = 0; i < n; i++) { s += f[i]; if(sum < s) sum = s; if(s < 0) s = 0; } Pl(ans + sum); } return 0;}
0 0
- hdoj 5586 Sum 【dp】
- HDOJ 5586-Sum【经典DP】
- hdoj Sum 5586 (模拟dp)
- Max Sum--hdoj 1003 dp
- hdoj 1003 Max Sum【dp】
- HDOJ 1003-Max Sum【DP】
- HDOJ 1003Max Sum (dp)
- 杭电HDOJ 5586 SUM(dp)(动态规划)
- DP专题2 HDOJ 1003 Max Sum
- Hdoj 1024 Max Sum Plus Plus 【DP】
- HDOJ 1003 Max Sum(DP,思维)
- 简单DP HDOJ 1003 MAX SUM
- HDOJ(HDU).1003 Max Sum (DP)
- hdoj.1003 Max Sum【DP】 2015/04/13
- hdoj 1024 Max Sum Plus Plus 【简单dp】
- DP(一)HDOJ 1003 Max Sum(java版)
- HDU-5586 Sum(DP)
- HDU 5586 Sum (dp)
- HDU5585
- 学习React Native(三)HelloWorld 基本源码学习
- LDR指令和LDR伪指令的区别
- 【quick-cocos2dx从零开始做游戏】【二】创建工程与运行
- sqlite3使用基础
- hdoj 5586 Sum 【dp】
- Linux笔记分享-crazychao
- VMware虚拟机下安装原版XP外文系统
- iOS最简单绘图实现
- Android自定义相机方法及保存照片方式
- hdu5587 BestCoder Round #64 (div.2)
- 【HDU5583 2015上海赛区L】【找规律 正难则反】LCM Walk 目标状态(x,y)哪些点走公倍数能走到它
- HDU5587
- hdoj 5587 Array 【思维】