【简单DP】CF1420 C1

昨天的CF心态又打崩了

好久没写DP了这道题一发过了

但是大家都会qwq

烦死 

Problem - C1 - Codeforces

题意:

给定一个序列,让你找出一个子序列

使得

这个最大,a是子序列

【简单DP】CF1420 C1_第1张图片

思路:

 首先子序列,自然就是DP

然后每个数有两种状态:被减或者被加

还有一个特殊条件:ai<=n

因此状态可以这么设计:

设dp[ai][0/1]表示以ai为结尾的子序列的最大价值,其中0代表ai被减,1代表ai被加

但是这样很容易就变成n^2的

因此需要哈希一下

维护一下前缀作为+的最大值和前缀作为-的最大值

然后就可以转移了

Code:

【简单DP】CF1420 C1_第2张图片

 

你可能感兴趣的:(动态规划,算法,动态规划)