HDU 1421 搬寝室

来源:互联网 发布:python爬去百度文库 编辑:程序博客网 时间:2024/04/28 19:16

好好琢磨一下吧 DP....

#include<iostream>#include<string>#include<cstdio>#include<algorithm>using namespace std;int f[2222][2222];int min( int a,int b ){ return a<b?a:b; }bool cmp( int a,int b ){ return a<b; }int powsum( int a,int b ){ return (a-b)*(a-b); }int main(){ int N,K; int g[2222]; while( scanf( "%d %d",&N,&K )!=EOF ) {    for( int i=1;i<=N;i++ )    scanf( "%d",&g[i] );    sort( g+1,g+N+1,cmp );    for( int i=0;i<=N;i++ )    for( int j=1;j<=K;j++ )    f[i][j]=INT_MAX;        for( int i=2;i<=N;i++ )    for( int j=1;j*2<=i;j++ )    f[i][j]=min( f[i-1][j],f[i-2][j-1]+powsum(g[i],g[i-1]) );    printf( "%d\n",f[N][K] );  }  return 0;}



原创粉丝点击