我是靠谱客的博主 含糊蛋挞,最近开发中收集的这篇文章主要介绍HDU 1500 Chopsticks,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一道不算是很难的DP,一些人的爱好还真是奇怪的说!

嘿嘿

先变成非递增序列,因为要保证有一个最大的C在每一组里面。

转移方程: dp[i][j] = Min(dp[i][j-1] , dp[i-1][j-2] + (set[j-1 - set[j] )* (set[j-1] -set[j]))

第i个人 第j个筷子的时候的最小值 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define NN 5010
#define Min(a,b) (a>b?b:a)
int set[NN];
int dp[1010][NN];
int main()
{
int t,k,n,i,j;
scanf("%d",&t);
while(t--){
scanf("%d%d",&k,&n);
k += 8;
for(i=n;i>=1;i--)
scanf("%d",&set[i]);
for(i=1;i<=k;i++){
dp[i][i*3] = dp[i-1][i*3-2] + (set[i*3-1] - set[i*3])*(set[i*3-1] - set[i*3]);
for(j=i*3+1;j<=n;j++)
dp[i][j] = Min(dp[i][j-1],dp[i-1][j-2] +(set[j-1] -set[j])*(set[j-1] - set[j]));
}
printf("%dn",dp[k][n]);
}
return 0;
}


最后

以上就是含糊蛋挞为你收集整理的HDU 1500 Chopsticks的全部内容,希望文章能够帮你解决HDU 1500 Chopsticks所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部