动态规划——最大累加和
来源:互联网 发布:优衣库 实体 淘宝 编辑:程序博客网 时间:2024/06/06 02:56
动态规划?
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
动态规划作为《运筹学》的一个分支,被广泛的用于解决较为复杂的经济管理问题,以达到的最优抉择,获得最大经济收益为目的。也因其多变性,非常的频繁的出现在信息学竞赛的赛场上。
动态规划的核心思想为不断将问题分解为子问题,一直到可以较容易的得到最优答案,再去决定其父问题的决策,因为很大程度的避免了重复子问题的抉择,故可以节约大量时间。
现在问题来了,有一个一维数组,存储了n个正整数,下标依次为0,1,2,….,n-1。
现在要从中选取一部分数,你要给出一个选择方案使得你的方案满足下列要求:
这部分元素的下标应满足st,st+5, st+5*2 , st+5*3, … , st+5*x (0 <= st < n ,st <= st+5*x < n)。在满足第一条要求的方案中,应选取其累加和最大的一种的方案。
Input
多组输入。
对于每组输入:
第一行输入一个n(1 <= n <= 100000)。
接下来的一行有n个整数y(-100000 <= y <= 100000)。
Output
对于每组数据,输出一个整数代表你的方案的累加和。
Example Input
10
1 2 3 4 5 6 7 8 9 10
3
1 -10 2
3
-1 -2 -3
Example Output
15
2
-1
Hint
st <= st+5*x < n, x不一定从0开始也不一定到n-1结束
Author
zmx
#include <stdio.h>#define MAX(a, b) (a>b)? a: blong long a[100004];long long max;int main(){ int n, i; while(scanf("%d", &n) != EOF) { max = -100001; for(i = 0; i < n; i++) { scanf("%lld", &a[i]); if(i >= 5) { if(a[i] + a[i-5] > a[i]) { a[i] += a[i-5]; } } max = MAX(max, a[i]); } printf("%lld\n", max); } return 0;}/***************************************************User name: jk1606Result: AcceptedTake time: 180msTake Memory: 892KBSubmit time: 2017-01-14 16:39:35****************************************************/
1 0
- 动态规划——最大累加和
- 最大字段和——动态规划
- 动态规划——最大字段和
- 动态规划——数组最大子数组和
- 动态规划——最大子矩阵和
- 动态规划——最大子矩阵和 收藏
- 动态规划——数组最大子数组和 收藏
- 动态规划——最大连续子段和
- 最大子段和——分治与动态规划
- 动态规划——数组最大子数组和
- 最大子段和——分治与动态规划
- 最大子段和——分治与动态规划
- 动态规划——最大连续子段和
- 最大子段和——分治与动态规划
- 动态规划——最大子矩阵和
- 动态规划——最大子段和问题
- 动态规划——最大子段和
- 最大子段和——分治与动态规划
- 行列递增矩阵的查找
- jstl的问题
- 康拓展开及其逆运算和全排列函数
- poj 2429 GCD & LCM Inverse(Miller_rabin 测试+pollard_rho大数分解)
- linux-搭建web服务器系列--安装搭建nginx(五)
- 动态规划——最大累加和
- 关闭shell后如何保持程序继续运行
- 给定 n×n 的实数矩阵,每行和每列都是递增的,求这 n^2 个数的中位数。
- 9 java枚举总结
- 用Node.js实现余票查询并用邮件通知
- 对 data/data/ packagename/ files 下文件操作
- android:id="@android:id/tabhost" 、android:id="@+id/llRoot" 、android:id="@id/llRoot" 之间的区别
- 1056. Mice and Rice (25)-PAT甲级真题(queue的用法)
- 乔布斯的一句话