每次执行memset初始化,居然TLE
// File Name: hdu1421.cpp // Author: rudolf // Created Time: 2013年04月25日 星期四 13时00分19秒 #include<vector> #include<list> #include<map> #include<set> #include<deque> #include<stack> #include<bitset> #include<algorithm> #include<functional> #include<numeric> #include<utility> #include<sstream> #include<iostream> #include<iomanip> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<ctime> using namespace std; const int maxn=2005; const int MIN=999999999; int dp[maxn][maxn]; int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } int main() { int n,k; int num[maxn]={0}; dp[0][0]=0; while(cin>>n>>k) { num[0]=0; // memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) cin>>num[i]; qsort(num+1,n,sizeof(num[0]),cmp); for(int i=0;i<=n;i++) for(int j=1;j<=k;j++) dp[i][j]=MIN; for(int i=2;i<=n;i++) for(int j=1;2*j<=i;j++) dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(num[i]-num[i-1])*(num[i]-num[i-1])); cout<<dp[n][k]<<endl; } return 0; }
作者:liujie619406439 发表于2013-4-25 13:20:25 原文链接
阅读:0 评论:0 查看评论