#include<stdio.h>
#include<string.h>
int d[5000][1010],a[5000];
int min(const int a,const int b)
{
if(a<b)return a;
else return b;
}
int main()
{
int n,k,i,j,T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&k,&n);
memset(d,0,sizeof(d));
for(i=n-1;i>=0;i--)
scanf("%d",&a[i]);
for(j=1;j<=k+8;j++)
{
i=3*j-2;
d[i][j]=1000000000;
i++;
for(;i<n;i++)
{
int t=d[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]);
d[i][j]=min(d[i-1][j],t);
}
}
printf("%d\n",d[n-1][k+8]);
}
return 0;
}
zoj1234 Chopsticks
最新推荐文章于 2022-04-22 23:34:06 发布