HDU 1421 搬寝室
2014-11-05 22:26
393 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1421
dp[i][j]代表前i个物品中选j对的最小疲劳度。如果j对中包含第i个物品那么这种情况下,第i种物品一定是和第i-1个物品配对,那么则dp[i][j]=dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1])。
如果j对中不包含第i个物品那么这种情况下,退化为i-1时的情况即dp[i][j]=dp[i-1][j]。
http://acm.hdu.edu.cn/showproblem.php?pid=1421
dp[i][j]代表前i个物品中选j对的最小疲劳度。如果j对中包含第i个物品那么这种情况下,第i种物品一定是和第i-1个物品配对,那么则dp[i][j]=dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1])。
如果j对中不包含第i个物品那么这种情况下,退化为i-1时的情况即dp[i][j]=dp[i-1][j]。
<span style="color:#000000;">#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std; const int N = 1010; const int INF = 0x3f3f3f3f; int dp[N*2] ,a[N*2],n,k; int main(){ // freopen("in.txt", "r", stdin); while(scanf("%d%d",&n,&k) == 2){ for(int i=1; i<=n; i++) scanf("%d",&a[i]); sort(a+1, a+1+n); for(int i=0; i<=n; i++) for(int j=1; j<=n; j++) dp[i][j] = INF; for(int i=0; i<=n; i++) dp[i][0] = 0; for(int i=2; i<=n; i++) for(int j=1; j*2<=i; j++) dp[i][j] = min(dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]), dp[i-1][j]); printf("%d\n",dp [k]); } return 0; } </span>
相关文章推荐
- HDU - 1421 搬寝室
- hdu 1421 搬寝室
- HDU 1421 搬寝室
- hdu1421——搬寝室
- HDU 1421:搬寝室【dp】
- HDU 1421 搬寝室 动态规划
- hdu 1421 搬寝室(dp)
- hdu 1421(搬寝室)
- HDU 1421 搬寝室
- HDU-OJ-1421 搬寝室
- hdu 1421 搬寝室 dp 类似背包
- HDU 1421 搬寝室
- HDU 1421 搬寝室
- hdu1421 搬寝室(dp)
- HDU--1421 -- 搬寝室 [DP] [滚动数组]
- HDU 1421 搬寝室 (线性dp 贪心预处理)
- HDU 1421 ( 搬寝室动态规划)
- HDU 1421--搬寝室【DP】
- 动态规划 hdu 1421 搬寝室
- 【dp】HDU 1421 搬寝室