#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]);

    }

}

  

fdssd的更多相关文章

  1. HTML5标签选择,图文混排使用dl dt dd

    图文混排,可以使用 dl dt dd(dd 和 dt 是同级,不可以嵌套,没有先后顺序) 1,上面红色部分是标题,可以使用h1里面包含一个span标签,样式一样,所以两个可以一起写. 2,上面黑色部分 ...

  2. C#基础学习(二)

    ---恢复内容开始--- 面向对象 (类是不占内存,实例占内存) C#与python不用可以直接从另一个文件直接实例化一个类,不需要导包:                                ...

随机推荐

  1. Android学习笔记(一)

    目录 Android学习笔记(一) 一.JDK.Android SDK 二.部分项目结构 三.字符串引用 四.外层build.gradle详解 五.app->build.gradle详解 六.日 ...

  2. 题解 AT3718 【[ABC081B] Shift only】

    题目传送门 分析 直接暴力. 我们可以根据题意进行模拟,使用二重循环即可. 代码讲解 定义变量\(n\)和计数数组\(cnt\),再定义数组\(a\)并输入. int a[1000000]; int ...

  3. Spring Cloud 5大组件

    服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring C ...

  4. STL中_Rb_tree的探索

    我们知道STL中我们常用的set与multiset和map与multimap都是基于红黑树.本文介绍了它们的在STL中的底层数据结构_Rb_tree的直接用法与部分函数.难点主要是_Rb_tree的各 ...

  5. 性能优化-css,js的加载与执行

    前端性能优化 css,js的加载与执行 javascript是单线程的 一个网站在浏览器是如何进行渲染的呢? html页面加载渲染的过程 html渲染过程的一些特点 顺序执行,并发加载 词法分析 并发 ...

  6. windows批量删除同名进程

    这里以删除chromedriver.exe 黑窗口执行命令:taskkill /F /IM chromedriver.exe 任务管理器发现,内存使用迅速指数下降

  7. layedit不可编辑,按钮不能使用

    $("#LAY_layedit_1").contents().find("body[contenteditable]").prop("contente ...

  8. HCTF2018-admin[flask session 伪造]

    知识点:flask session 伪造 flask中session是存储在客户端cookie中的,也就是存储在本地.flask仅仅对数据进行了签名.众所周知的是,签名的作用是防篡改,而无法防止被读取 ...

  9. Java实现图形界面的三部曲及IDE中的窗口设计

    设计和实现图形用户界面的工作主要有以下几点: • (1)创建组件(Component) • 创建组成界面的各种元素,如按钮.文本框等.• (2)指定布局(Layout) • 根据具体需要排列它们的位置 ...

  10. Hadoop启动HDFS时DataNode未启动

    在用$HADOOP_HOME/sbin/start-dfs.sh启动HDFS时发现只有NameNode和SecondaryNameNode启动,没有DataNode. 查看logs下的DataNode ...