折花岁月

博客园 首页 新随笔 联系 订阅 管理

2013年10月7日 #

摘要: 题意:给出一个数列长度小于5000,每次操作将数列中的数加1或减1,问最少需要多少步操作可以得到一个不降序列;分析:可知最少的次数,一定是由原来的数据构成的(据说可以用反证法证),即有原来的数组成的不降子序列中有一个最小的情况; 我们用F[i][j] = min(F[i][j -1] (不包含这一个时),F[i-1][j] + fabs(A[i] - B[j])(包含这一种时));其中B[]代表不重非减序列i,j代表前个数最大为B[j]时的最优情况;注意:本题数据大,F[][]的过程用到了滚动数组; 1 #include 2 #include 3 #include 4 #include ... 阅读全文
posted @ 2013-10-07 22:00 iyi 阅读(273) 评论(0) 推荐(0) 编辑