UESTC - 594 我要长高 单调队列优化DP
【题目链接】 点击打开链接 【题意】中文题目。 【解题方法】 容易想到一个非常朴素的DP。dp[i][j] 代表第i个儿子,身高为j的最低花费。 dp[i]
【题目链接】 点击打开链接
【题意】中文题目。
【解题方法】 容易想到一个非常朴素的DP。dp[i][j] 代表第i个儿子,身高为j的最低花费。 dp[i][j] = min(dp[i-1][k] + abs(j - k) * C + (x[i] - j) * (x[i] - j));
然后分为两种情况:
1:第i个儿子的身高,比i-1高时。 dp[i][j] = min(dp[i - 1][k] + j * c - k * c + X), (k <= j) X等于 (x[i] - j) * (x[i] - j);
2:第i个儿子的身高,比i-1矮时,dp[i][j] = min(dp[i - 1][k] - j * c + k * c + X), (k >= j) X等于 (x[i] - j) * (x[i] - j);
对于第一种情况,我们让f[i - 1][k] = dp[i - 1][k] - k * c; g[i][j] = j * c + x;
【AC代码】
//
//Created by BLUEBUFF 2016/1/8
//Copyright (c) 2016 BLUEBUFF.All Rights Reserved
//#pragma comment(linker,"/STACK:102400000,102400000")
#include
#include
#include
#include
#include
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!