hdu1421 搬寝室
2013-01-14 18:47
246 查看
给n个数。选出k个数。使疲劳度最小
疲劳度是两手物品重量差的平方
dp[i][j]表示从i个物品选j个的最小疲劳度
所以dp[i][j] = min ( dp[i - 1][j] , dp[i - 2][j] + ( w[i] - w[i - 1] ) * ( w[i] - w[i - 1] ) )
疲劳度是两手物品重量差的平方
dp[i][j]表示从i个物品选j个的最小疲劳度
所以dp[i][j] = min ( dp[i - 1][j] , dp[i - 2][j] + ( w[i] - w[i - 1] ) * ( w[i] - w[i - 1] ) )
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; int ct, k, i, j, w[2005], dp[2005][2005]; int main ( ) { while ( scanf ( "%d %d", &ct, &k ) != EOF ) { memset ( dp, 127, sizeof ( dp ) ); for ( i = 1; i <= ct; ++i ) scanf ( "%d", &w[i] ); sort ( w + 1, w + ct + 1 ); for ( i = 0; i <= ct; ++i ) dp[i][0] = 0; for ( i = 2; i <= ct; ++i ) for ( j = 1; 2 * j <= i; ++j ) dp[i][j] = min ( dp[i - 2][j - 1] + ( w[i] - w[i - 1] ) * ( w[i] - w[i - 1] ), dp[i - 1][j] ); printf ( "%d\n", dp[ct][k] ); } }
相关文章推荐
- HDU 1421 搬寝室
- HDU-1421 搬寝室 (线性dp 好题)
- [HDU 1421]搬寝室(富有新意的DP)
- HDU 1421 搬寝室
- hdu 1421 搬寝室
- hdu 1421 搬寝室 dp
- hdu 1421 搬寝室 dp问题
- HDU 1421 搬寝室
- HDU 1421 搬寝室
- HDU 1421 搬寝室
- HDU - 1421 - 搬寝室
- HDU 1421 搬寝室
- hdu 1421 搬寝室
- hdu1421_搬寝室
- HDU 1421 搬寝室(dp)
- HDU 1421 搬寝室——dp动态规划
- HDU 1421 搬寝室 (dp)
- hdu 1421 搬寝室 dp问题
- HDU-OJ 1421 搬寝室
- HDU 1421 搬寝室 dp