#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #include<queue> #include<stack>

#define MAXN 1005

using namespace std;

unsigned long long  f[MAXN][MAXN],w[MAXN];

int num[MAXN];

#define FZ(i,p)(f[i-1][p]+num[p+1]*num[p+1])

int i,p;

int que[MAXN],tail,head;

int n,m,j;

bool turnup(int i,int p1,int p2,int p3) //p1>p2>p3

{

    unsigned long long y1=FZ(i,p1),x1=num[p1],y2=FZ(i,p2), x2=num[p2], y3=FZ(i,p3), x3=num[p3];

    if((x2-x3)*(y1-y2)>(x1-x2)*(y2-y3))return 1;

    else return 0;

}int ii,nn;

int main()

{   scanf("%d",&nn);

    for(ii=1;ii<=nn;ii++)

    {

    scanf("%d%d",&n,&m);

     

    for(int i=1;i<=n;i++)

    {

        scanf("%d",&num[i]);

    }

    sort(num+1,num+n+1);

    for(i=1;i<=n;i++)

      f[0][i]=(num[i]-num[1])*(num[i]-num[1]);

 

    for(int i=1;i<=m;i++){

        head=tail=1;

        que[tail++]=0;

 

  for(int j=1;j<=n;j++){

        while(head<tail-1&&FZ(i,que[head+1])-FZ(i,que[head])<2*num[j]*(num[que[head+1]]-num[que[head]]))

            head++;

    int k=que[head];

    f[i][j]=f[i-1][k]+(num[j]-num[k+1])*(num[j]-num[k+1]);

    while(head<tail-1&&turnup(i,j,que[tail-1],que[tail-2])==0)

    tail--;

    que[tail++]=j;

    }

    }

    printf("%I64d\n",f[m][n]);

    }

}

  

最新文章

  1. webpack 使用优化指南
  2. oracle删除users表空间
  3. css居中解决方案
  4. 各种隐藏 WebShell、创建、删除畸形目录、特殊文件名、黑帽SEO作弊(转自核大大)
  5. SRM 595 DIV1 250
  6. IO流,File类的测试........课堂加总结
  7. i++问题
  8. 【转】C++的拷贝构造函数深度解读,值得一看
  9. python大数据工作流程
  10. 一大早居然有骗子还是傻子,真是莫名其妙的,QQ1913522040,一看就是刚申请不久的
  11. JavaScript——对this指针的新理解
  12. MySql数据库SQL语句将编码
  13. Node.js: What is the best "full stack web framework" (with scaffolding, MVC, ORM, etc.) based on Node.js / server-side JavaScript? - Quora
  14. 用js动态的改变img标签里面的src属性实现图片的循环切换
  15. HMC5883L地磁传感器驱动
  16. s3c2440 nandflash 初始化
  17. python 分享一个通过 (key1.key2.key3) 形式获取嵌套字典值的方法
  18. 计数器counter
  19. [Objective-C语言教程]字符串(16)
  20. NOIP 2018 记

热门文章

  1. 问题 C: 查找
  2. BLE直接Data channel抓包方法汇总
  3. java 8 supplier object区别
  4. C语言实现顺序栈
  5. MySQL的联表查询
  6. CTF之图片隐写术解题思路
  7. 跳表的java实现,转载自网络,仅供自己学习使用
  8. FatMouse and Cheese HDU - 1078 dp
  9. [TJOI2013] 攻击装置 - 二分图匹配
  10. javascript download geoserver layer as kml file