1 条题解

  • 0
    @ 2025-2-14 21:20:41

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<climits>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int  f[200][200],a[200];
    int n,k,i,j;
    int min(int a,int b)
    {
        if(a<b)
            return a;
        else
            return b;
    }
    void init()
    {
     scanf("%d%d",&n,&k);
     if((k+3)*2>n)cout<<-1<<endl,exit(0);
     for(i=1;i<=n;i++)
     scanf("%d",&a[i]);
     sort(&a[1],&a[n]+1);
    }
    int main()
    {
      init();
      memset(f,0x3f,sizeof(f));
      for(i=0;i<=n;i++)f[i][0]=0;
      for(i=2;i<=n;i++)    
      for(j=1;j<=i/2;j++)
      f[i][j]=min(f[i-1][j],f[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]));
     
      printf("%d\n",f[n][k+3]);
      return 0;
    }
    
    • 1

    信息

    ID
    819
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者