2593 今天我D了个P

第一次AC了一道有点难度的题

 

好好写一回解题报告

 

Max Sequence
Time Limit: 3000MS Memory Limit: 65536K
Total Submissions: 8026 Accepted: 3230

Description

Give you N integers a1, a2 ... aN (|ai| <=1000, 1 <= i <= N).

You should output S.

Input

The input will consist of several test cases. For each test case, one integer N (2 <= N <= 100000) is given in the first line. Second line contains N integers. The input is terminated by a single line with N = 0.

Output

For each test of the input, print a line containing S.

Sample Input

5
-5 9 -5 11 20
0

Sample Output

40

Source

POJ Monthly--2005.08.28,Li Haoyuan
此题要求一个已知整数序列中两个子序列和的最大值
和2479如出一辙 数据量有所变化 因此要在堆上用new来分配数组了
研究了两天的DP,翻来覆去终于有了点头绪。
所谓DP,只是一种思想,不要去找所谓的万能公式。
一个大问题的最优解,如果可以用小问题的最优解通过一个条件式表达出来(DP公式),就可以用DP的思想进行解决。
具体怎么说呢,还是多做些题体会吧。
代码:
关于这道题中的求最大和子序列的问题
今天又看了另一位的代码 觉得他的代码能非常好地体现解题思想,遂转来
就和我以前说的一样(在哪说的忘记了)。。
用b来记录一定要将子序列延续到当前位置(也就是序列头浮动,序列尾固定),也就是一定要将序列继续下去的话,当前位置和其之前的序列一共可以给最大和贡献多少。
而我认为 dp也是体现在这里的。这才是dp函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值