题目大意:在n个数中,找出k个三元组(a<=b<=c),求最小的(a-b)*(a-b)之和。

题目分析:将所有数从大到小排序,定义dp(i,j)表示前 i 个数中找出 j 个三元组时的最小和,则状态转移方程为dp(i,j)=min(dp(i-1,j),dp(i-2,j-1)),第二种决策是在前i-1个数构成j-1组三元组时必须还要有剩余的数的前提下才能做出。这道题和“搬寝室”和“筷子”类似,同样要填表求解并且注意边界。

代码如下:

# include<iostream>
# include<cstdio>
# include<cstring>
# include<algorithm>
using namespace std;
# define LL long long const int INF=1<<30; int m,n,a[5005];
int dp[5005][1010]; int solve()
{
m+=8;
for(int i=0;i<n;++i){
dp[i][0]=0;
for(int j=1;j<=m;++j) dp[i][j]=INF;
}
for(int i=2;i<n;++i){
for(int j=1;j<=m;++j)
if(i>=3*j-1) dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]));
}
return dp[n-1][m];
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&m,&n);
for(int i=n-1;i>=0;--i)
scanf("%d",a+i);
printf("%d\n",solve());
}
return 0;
}

  

最新文章

  1. ios基础篇(二十八)—— UITableView的上拉加载
  2. WEB-INF&amp; 绝对路径vs相对路径
  3. QRCode.jar生成二维码
  4. java基础学习系列一
  5. Rsync + sersync 实时同步备份
  6. nfs服务启动失败:Failed to start NFS status monitor for NFSv2/3 locking..
  7. css -理解盒模型
  8. filter帅选
  9. Zookeeper系列一:Zookeeper介绍、Zookeeper安装配置、ZK Shell的使用
  10. docker日志清理
  11. -bash: 未预期的符号 `(&#39; 附近有语法错误
  12. 回文数的golang实现
  13. 架构师成长之路2.2-PXE+Kickstart安装部署
  14. tabindex 去掉虚线
  15. DDD领域模型企业级系统(二)
  16. rpm管理环境包和代码包
  17. 关于VS 工具箱灰色,不可用的解决方案
  18. 全库搜索某个内容的sql
  19. 2015/11/2用Python写游戏,pygame入门(2):游戏中的事件和显示
  20. Forms.Timer、Timers.Timer、Threading.Timer的研究

热门文章

  1. python之路----面向对象中的内置函数
  2. 关于linux中的上下文切换
  3. 20145212罗天晨 注入shellcode实验及Retuen-to-libc实验
  4. [c/c++]指针(3)
  5. VC++禁止标题栏鼠标双击事件
  6. Metasploit应用举例
  7. jz2440移植QT5.6【学习笔记】【原创】
  8. 【第一章】 第一个spring boot程序
  9. 【Maven安装】centos安装maven
  10. 论文笔记之:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS