标签:
In China, people use a pair of chopsticks to get food on the table, but Mr. L is a bit different. He uses23
要保证有一根长筷子,我们可以从后到前DP:f[i][j]:前i根配了j对的最小代价。
#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<string> #include<iostream> #include<queue> #include<cmath> #include<map> #include<stack> #include<bitset> using namespace std; #define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i ) #define REP( i , n ) for ( int i = 0 ; i < n ; ++ i ) #define CLEAR( a , x ) memset ( a , x , sizeof a ) typedef long long LL; typedef pair<int,int>pil; const int INF = 0x3f3f3f3f; int t,n,k; int a[5500]; LL dp[5500][1100]; int main() { scanf("%d",&t); while(t--) { scanf("%d%d",&k,&n); k+=8;CLEAR(dp,INF); for(int i=n;i>=1;i--) scanf("%d",&a[i]); dp[0][0]=0; for(int i=1;i<=n;i++) { for(int j=1;j<=k;j++) { dp[i][j]=dp[i-1][j]; if(i-j*3>=0) dp[i][j]=min(dp[i][j],dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1])); } } printf("%lld\n",dp[n][k]); } return 0; }
题目描述
输入
共有两行,第一行为两个用空格隔开的整数,表示N,K(1≤N≤100,0<K<50),第二行共有N个用空格隔开的整数,为Ti每个整数为1~50之间的数。
输出
仅一行。如果凑不齐K+3双,输出-1,否则输出长度差平方和的最小值。
样例输入
10 1
1 1 2 3 3 3 4 6 10 20
样例输出
5
提示
第一双 1 1
第二双 2 3
第三双 3 3
第四双 4 6
(1-1)^2+(2-3)^2+(3-3)^2+(4-6)^2=5
弱化版,较简单
#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<string> #include<iostream> #include<queue> #include<cmath> #include<map> #include<stack> #include<bitset> using namespace std; #define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i ) #define REP( i , n ) for ( int i = 0 ; i < n ; ++ i ) #define CLEAR( a , x ) memset ( a , x , sizeof a ) typedef long long LL; typedef pair<int,int>pil; const int INF = 0x3f3f3f3f; int dp[110][55]; int L[110]; int n,m; int main() { while(~scanf("%d%d",&n,&m)) { REPF(i,1,n) scanf("%d",&L[i]); sort(L+1,L+n+1); m+=3; CLEAR(dp,INF); dp[0][0]=0; for(int i=2;i<=n;i++) { for(int j=1;j<=m;j++) dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(L[i-1]-L[i])*(L[i-1]-L[i])); } if(dp[n][m]!=INF) printf("%d\n",dp[n][m]); else puts("-1"); } return 0; } /* */
标签:
原文地址:http://blog.csdn.net/u013582254/article/details/45676769