动态规划

1.2015安徽网络预赛: http://acm.hdu.edu.cn/showproblem.php?pid=5492

   题意:给一个N*M的矩阵(N<=30,M<=30),矩阵中每个点都有一个正整数值,从(1,1)到(n,m)每次只能向右或者向下走,找一条方差最小的路径。

   错误想法: 动态规划,每到达一个点,让它之前的路径的方差最小,从这些“最优”的路径中,选择加上此点后新路径使现在的方差最大。

   错误原因: 转移方程不正确。没有证明这个思路是正确的。实际上,很容易证明这是一条错误的思路。如下图,走1->1->100的方差比走1->50->100的方差要大。 但是按原来的想法,确实会得出相反的结论。(做动态规划及其他题目时,一定要预先证明或者简要判定自己的思路是正确的,得出的答案是正确的,不然在一个错误的方向上坚持再久也不可能AC)

1 50
1

100

   解法1.  

          化简原式=(N+M-1)∑(Ai-A)^2-(∑Ai)^2;    结果只与两部分有关。可以定一动一。求在所有可能的sumAi情况下,最小的(N+M-1)∑(Ai-A)^2。(三维DP数组)

  解法2.

         利用性质∑(Ai-A)^2 ,当且仅当A是所有Ai的平均值时,此式结果最小。先预处理出sumAi的范围,最大为[1,1770];然后在这个区间枚举。

 

posted @ 2015-09-28 00:55  Lazy_sheep  阅读(222)  评论(0)    收藏  举报