fdssd
#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的更多相关文章
- HTML5标签选择,图文混排使用dl dt dd
图文混排,可以使用 dl dt dd(dd 和 dt 是同级,不可以嵌套,没有先后顺序) 1,上面红色部分是标题,可以使用h1里面包含一个span标签,样式一样,所以两个可以一起写. 2,上面黑色部分 ...
- C#基础学习(二)
---恢复内容开始--- 面向对象 (类是不占内存,实例占内存) C#与python不用可以直接从另一个文件直接实例化一个类,不需要导包: ...
随机推荐
- [Python]爬取首都之窗百姓信件网址id python 2020.2.13
经人提醒忘记发网址id的爬取过程了, http://www.beijing.gov.cn/hudong/hdjl/com.web.consult.consultDetail.flow?original ...
- NSSM 将jar 安装成windows服务
1.下载 nssm (下载地址: http://www.nssm.cc/release/nssm-2.24.zip ) 2.将打包好的jar包放到一个文件夹中,编写run.bat文件,run.bat内 ...
- C#中怎样在ToolStripMenuItem下再添加子级菜单
场景 在右键菜单ContextMenuStrip下添加子菜单选项可以通过 ContextMenuStrip menuStrip ToolStripMenuItem mnuChartOption = n ...
- D - How Many Answers Are Wrong HDU - 3038【带权并查集】
How Many Answers Are Wrong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(4.12-加-6.2-加-7.2.5.2)Fused_Operations
4.12 Fused Operations 融合操作 融合操作通过“fusing”把两个简单的命令融合一起来支持一个更复杂的命令.协议规定这个特性是可选的:如果支持此特性,需要在Figure 247 ...
- ROS2GO 与WIN10 双系统安装
关于ROS2GO的一些心得: 我是一个ROS的探索者,在接触ROS一段时间后,意外发现了一个关于ROS2GO的信息,是天之博特的微信公众号发表的.简单来说ROS2GO就是一个装了ROS的Ubuntu系 ...
- X shell安装 以及使用
X shell 百度搜索 X shell 然后下载软件 然后会进入主页面
- 题解【洛谷P1314】[NOIP2011]聪明的质监员
题面 题解 不难发现,\(W\)增大时,\(Y\)值会随之减小. 于是考虑二分\(W\). 如何\(\mathcal{O}(N)check?\) 每一次前缀和记录一下\(1-i\)之间\(w_i \g ...
- 杭电oj1717——小数化分数(java实现)
question:小数化分数2 思路: /** * 这道题没有整数部分(有也无所谓,算小数部分,算完了分子分母按倍数加上就好),也就是说数组直接从a[2]开始后面是小数,我把这道题分为了三类: * * ...
- 其他-使用 ProcessExplorer 定位 win10 系统资源占用
1. 概述 使用 ProcessExplorer 2. 环境 os win10 3. 背景 偶然在论坛上看到了一个工具 ProcessExplorer 作用是 定位当前桌面窗口 对应的 进程 我没有这 ...