题意:将n个数分成m段,每段的代价为最大值减最小值的平方,为代价最小是多少n<=10000 ,m<=5000

题解:先拍好序,从小到大,这样绝对是花费最小的,不过怎么样来做呢?一定很容易想到dp

分段dp十分好想吧,f[i][j]表示前i个数,分成j个数的最小值。

w[i][j]区间包含性十分好证明,

平行四边不等性,可以很好证明,

对吧,这样很好理解

所以得出f[i][j]满足------>s[i][j-1]<=s[i][j]<=s[i+1][j]

这个得出来就ok了,但是这道题有点奇葩,s[i][j-1]以前就求好了,但是s[i+1][j]呢?所以

需要倒着dp,先求s[i+1][j]在去搞s[i][j];

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#define inf 2000000009
using namespace std; int cas,n,m,now=;
int a[];
int f[][],s[][]; int main()
{
scanf("%d",&cas);
while(cas--)
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)
scanf("%d",&a[i]);
sort(a+,a+n+);
for (int i=;i<=n;i++)
f[i][]=(a[i]-a[])*(a[i]-a[]),s[i][]=;
for (int k=;k<=m;k++)
{
s[n+][k]=n;
for (int i=n;i>=k;i--)
{
f[i][k]=inf;
for (int j=s[i][k-];j<=s[i+][k];j++)
{
int t=f[j-][k-]+(a[i]-a[j])*(a[i]-a[j]);
if (t<f[i][k]) f[i][k]=t,s[i][k]=j;
}
}
}
printf("Case %d: %d\n",++now,f[n][m]);
}
}

hdu3480 Division(dp平行四边形优化)的更多相关文章

  1. HDU3480_区间DP平行四边形优化

    HDU3480_区间DP平行四边形优化 做到现在能一眼看出来是区间DP的问题了 也能够知道dp[i][j]表示前  i  个节点被分为  j  个区间所取得的最优值的情况 cost[i][j]表示从i ...

  2. 蓝桥杯:合并石子(区间DP+平行四边形优化)

    http://lx.lanqiao.cn/problem.page?gpid=T414 题意:…… 思路:很普通的区间DP,但是因为n<=1000,所以O(n^3)只能拿90分.上网查了下了解了 ...

  3. 51 nod 石子归并 + v2 + v3(区间dp,区间dp+平行四边形优化,GarsiaWachs算法)

    题意:就是求石子归并. 题解:当范围在100左右是可以之间简单的区间dp,如果范围在1000左右就要考虑用平行四边形优化. 就是多加一个p[i][j]表示在i到j内的取最优解的位置k,注意能使用平行四 ...

  4. HDU 3480 Division DP斜率优化

    解题思路 第一步显然是将原数组排序嘛--然后分成一些不相交的子集,这样显然最小.重点是怎么分. 首先,我们写出一个最暴力的\(DP\): 我们令$F[ i ][ j ] $ 为到第\(i\)位,分成\ ...

  5. HDU3480 Division —— 斜率优化DP

    题目链接:https://vjudge.net/problem/HDU-3480 Division Time Limit: 10000/5000 MS (Java/Others)    Memory ...

  6. 【BZOJ-4518】征途 DP + 斜率优化

    4518: [Sdoi2016]征途 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 230  Solved: 156[Submit][Status][ ...

  7. 【BZOJ-3437】小P的牧场 DP + 斜率优化

    3437: 小P的牧场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 705  Solved: 404[Submit][Status][Discuss ...

  8. 【BZOJ-1010】玩具装箱toy DP + 斜率优化

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8432  Solved: 3338[Submit][St ...

  9. 【Codeforces 321E / BZOJ 5311】【DP凸优化】【单调队列】贞鱼

    目录 题意: 输入格式 输出格式 思路: DP凸优化的部分 单调队列转移的部分 坑点 代码 题意: 有n条超级大佬贞鱼站成一行,现在你需要使用恰好k辆车把它们全都运走.要求每辆车上的贞鱼在序列中都是连 ...

随机推荐

  1. Java 获得Class的绝对路径方法

    Java获得class文件的绝对路径:1.e.g. Foo.class => Foo.class.getResuorce("").getFile(); 该方法在eclipse ...

  2. python基础7之python3的内置函数

    官方介绍: python3:https://docs.python.org/3/library/functions.html?highlight=built#ascii python2:https:/ ...

  3. 2017-06-27(useradd usermod userdel 禁止普通用户登录)

    useradd useradd  -g  组名  用户名  (添加新用户,并将其添加到指定的主用户组) useradd  -g  组名  -G 附属组名  用户名  (添加新用户,并将其添加至指定主用 ...

  4. JavaScript Hoisting

    Hoisting is JavaScript's default behavior of moving all declarations to the top of the current scope ...

  5. JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)

    1 学习计划 1.项目概述 项目背景介绍 2.搭建项目开发环境 数据库环境 maven项目搭建 svn环境搭建 3.主页设计(jQuery EasyUI) layout页面布局 accordion折叠 ...

  6. Windows ftp脚本和RSCD agent自动安装脚本

    Windows ftp脚本 和bladelogic RSCD Agent自动安装脚本 比较简单的命令是msiexec /I "C:\RSCD85-SP1-WIN64.msi" /Q ...

  7. junit3.8的使用

    今天开始junit使用系列,第一篇梳理junit3X系列,先贴下代码来体验下. 测试源代码如下: package test.junit38test; /** * @创建作者: LinkinPark * ...

  8. java里程碑之泛型--使用泛型

    现在重新整理下泛型,前面的整理好多的底层的东西理解不深.泛型很重要的,作为java的一个程碑式的改进,还是很有必要认真的理解下人家的JDK的良苦用心的. 1,什么是泛型?为什么要使用泛型? 一定要记住 ...

  9. Linux常用命令(二)--文件目录命令

    1. 列表目录命令: 格式: ls [参数] 用于显示文件或目录信息 选项: -l 每行显示一个文件和目录信息(长格式),简写:ll等同于ls -l 注意:当参数是文件时,显示此文件全部信息 当参数是 ...

  10. Sql Server的艺术(二) SQL复杂条件搜索

    本次讲到where字句中经常用到的集中较为复杂的搜索条件,包括组合的查询条件.IN运算符.NOT运算符.LIKE运算符和相关通配符. 学习本节需要用到一下两张表: CREATE TABLE TEACH ...