FZU 1416 飞机加油问题(DP)

来源:互联网 发布:淘宝钱柜数码怎么样 编辑:程序博客网 时间:2024/06/16 21:57

没啥好说的,大家看代码吧,。。这是个将要超时的代码。。大家看着办吧…..

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[400005],dp[400005],judge[400005];int main(){    int n,s;    while(~scanf("%d%d",&n,&s))    {        int num,cnt=0;;        memset(judge,0,sizeof(judge));        for(int i=0;i<n;i++)        {            scanf("%d",&num);            if(judge[num]==0)//有可能出现在同一位置的机场            {                judge[num]=1;                a[cnt++]=num;            }        }        sort(a,a+cnt);        dp[1]=s+a[1]*a[1];        for(int i=2;i<=cnt-1;i++)        {            dp[i]=s+a[i]*a[i];            for(int j=1;j<i;j++)            {                num=s+(a[i]-a[j])*(a[i]-a[j])+dp[j];                if(num<dp[i])                {                    dp[i]=s+(a[i]-a[j])*(a[i]-a[j])+dp[j];                }            }        }        printf("%d\n",dp[cnt-1]);    }    return 0;}
0 0