北京师范大学第十四届ACM决赛-重现赛 F:Training Plan(DP)
传送门
题意
将n个数分成m个集合,\(V_i表示max(x-y),x,y∈第\)i个集合,\(求minΣV_i\)
分析
我们先对难度排序,令dp[i][j]表示前i个数分成j个集合的最小费用
转移方程为
\]
预处理dp[i][i],dp[i][1],开 long long
吐槽
开lld过,开I64d wa,用线段树可以达到\(O(n^2)\)
类似题目:Codeforces Round #426 (Div. 2)-The Bakery
代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a))
int t;
int n,m,cnt;
ll a[505],b[505];
ll calc(int x)
{
return 1LL*x*x;
}
ll dp[505][505];
int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%d %d",&n,&m);
F(i,1,n) scanf("%I64d",a+i);
sort(a+1,a+1+n);
cnt=0;b[++cnt]=a[1];
F(i,2,n)
{
if(a[i]!=a[i-1]) b[++cnt]=a[i];
}
if(cnt<=m) puts("0");
else
{
F(i,0,cnt)F(j,0,m) dp[i][j]=1e18;
F(j,1,m)F(i,j,m) dp[j][i]=0;
F(i,2,n) dp[i][1]=calc(b[i]-b[1]);
//printf("%lld\n",dp[3][1]);
for(int i=1;i<=cnt;++i)for(int j=2;j<=m&&j<=i;++j)for(int k=j-1;k<i;++k)
{
//dp[i][j]=min(dp[i-1][j-1]);
dp[i][j]=min(dp[k][j-1]+calc(b[i]-b[k+1]),dp[i][j]);
}
//printf("%lld\n",dp[3][1]);
ll ans=1e18;
F(i,1,m) ans=min(ans,dp[cnt][i]);
printf("%lld\n",dp[cnt][m]);
}
}
return 0;
}
北京师范大学第十四届ACM决赛-重现赛 F:Training Plan(DP)的更多相关文章
- 北京师范大学第十五届ACM决赛-重现赛
Another Server 时间限制:1秒 空间限制:262144K 题目描述 何老师某天在机房里搞事情的时候,发现机房里有n台服务器,从1到n标号,同时有2n-2条网线,从1到2n-2标号,其中第 ...
- 北京师范大学第十五届ACM决赛-重现赛J Just A String (kmp算法延伸)
链接:https://ac.nowcoder.com/acm/contest/3/J 来源:牛客网 Just A String 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 北京师范大学第十五届ACM决赛-重现赛K Keep In Line ( 字符串模拟实现)
链接:https://ac.nowcoder.com/acm/contest/3/K 来源:牛客网 Keep In Line 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 北京师范大学第十五届ACM决赛-重现赛 B Borrow Classroom (树 ——LCA )
链接:https://ac.nowcoder.com/acm/contest/3/B 来源:牛客网 Borrow Classroom 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 2 ...
- 北京师范大学第十五届ACM决赛-重现赛D Disdain Chain (规律+组合数学)
链接:https://ac.nowcoder.com/acm/contest/3/D 来源:牛客网 Disdain Chain 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 北京师范大学第十五届ACM决赛-重现赛E Euclidean Geometry (几何)
链接:https://ac.nowcoder.com/acm/contest/3/E 来源:牛客网 Euclidean Geometry 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...
- 北京师范大学第十五届ACM决赛-重现赛C Captcha Cracker (字符串模拟)
链接:https://ac.nowcoder.com/acm/contest/3/C 来源:牛客网 Captcha Cracker 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26 ...
- 牛客网 湖南大学2018年第十四届程序设计竞赛重现赛 A game
链接:https://www.nowcoder.com/acm/contest/125/A来源:牛客网 Tony and Macle are good friends. One day they jo ...
- 北京师范大学第十六届程序设计竞赛决赛-重现赛-B题
一.题目链接 https://www.nowcoder.com/acm/contest/117/B 二.题意 给定一组序列$a_1,a_2,\cdots,a_n$,表示初始序列$b_1,b_2,\cd ...
随机推荐
- 向量空间模型实现文档查询(Vector Space Model to realize document query)
xml中文档(query)的结构: <topic> <number>CIRB010TopicZH006</number> <title>科索沃難民潮&l ...
- SAE云平台的使用
参考文章:http://www.cnblogs.com/luyangsblog/p/3956135.html Web开发从零单排之一:在新浪云平台SAE上开发一个htm ...
- Jenkins系列之-—07 集成JIRA
一.Jenkins Jira插件安装&配置 1. 安装插件,主要安装如下插件: Jira Issue Updater 该插件用于更新JIRA ISSUES 的工作流状态或增加备注 JIRA p ...
- Win8下怎样安装Win7 or Win7下怎样安装win8?
预计非常多人可能会用U盘安装工具去去做双系统的安装(Win8下安装Win7, Win7下安装Win8).可是在安装过程中你 会发现一个问题:win7下安装win8,提示你mbr硬盘格式不能安装win8 ...
- JOIN ,LEFT JOIN ,ALL JOIN 等的区别和联系
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) ...
- 转载:用python爬虫抓站的一些技巧总结
原文链接:http://www.pythonclub.org/python-network-application/observer-spider 原文的名称虽然用了<用python爬虫抓站的一 ...
- Android如果动态改变CursorAdapter Item个数
//adapter内部类 private class SearchAdapter extends CursorAdapter { @Override public View newView(Conte ...
- 用Qt编写的计算文件MD5值的Demo
Dialog.ui <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0& ...
- springboot 项目 docker化部署
最近公司项目需要docker化,项目所使用的框架是springboot,linux环境.第一次接触docker化方面的技术.做的时候,所接触的新知识比较多,留下此文,以便以后用到的时候快速入手. 修改 ...
- 关于O_DIRECT的那些事儿
很久之前落下的坑,一直没怎么记录-.- 一般地,如果在Linux内核中读写一个文件,其IO流程都需要经过Kernel内的page cache层次,如果程序员若想要使用自己开发的缓存系统,那么就可以在打 ...