动态规划
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];然后在这个区间枚举。
向着world final前行

浙公网安备 33010602011771号