传送门

文章目录

  • 题意:
  • 思路:

题意:

给定一个序列aaa,每次拿出来任意一个数(注意每次选的数不同),让后定义max=max(a1,a2,...,ai)max=max(a_1,a_2,...,a_i)max=max(a1​,a2​,...,ai​),min=min(a1,a2,...,ai)min=min(a_1,a_2,...,a_i)min=min(a1​,a2​,...,ai​),di=max−mind_i=max-mindi​=max−min,求min(d1+d2+,...,+dn)min(d_1+d_2+,...,+d_n)min(d1​+d2​+,...,+dn​)。

思路:

考虑将aaa数组排序,我们发现排序之后只剩一个区间合并的问题了,即转换成将一个数添加到一个区间,且这个数一定与这个区间是相邻的,花费就是a[r]−a[l]a[r]-a[l]a[r]−a[l]。说到这里很明显就是个去区间dpdpdp了,定义f[l][r]f[l][r]f[l][r]为[l,r][l,r][l,r]的最小花费,考虑怎么扩展区间长度,比较容易想到如下转移方程:f[l][r]=min(f[l][r],min(f[l][r−1],f[l+1][r])+a[r]−a[l])f[l][r]=min(f[l][r],min(f[l][r-1],f[l+1][r])+a[r]-a[l])f[l][r]=min(f[l][r],min(f[l][r−1],f[l+1][r])+a[r]−a[l])
不可能从中间转移,因为从中间合并两个长度的区间一定不优于从两头转移来的,所以不需要枚举[l,r][l,r][l,r]转移,复杂度为O(N2)O(N^2)O(N2)。

//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=2010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
LL f[N][N],a[N];int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%lld",&a[i]);for(int len=2;len<=n;len++)for(int l=1;l<=n-len+1;l++){int r=l+len-1;f[l][r]=1000000000000000;}sort(a+1,a+1+n);for(int len=2;len<=n;len++)for(int l=1;l<=n-len+1;l++){int r=l+len-1;f[l][r]=min(f[l][r],min(f[l+1][r],f[l][r-1])+a[r]-a[l]);}printf("%lld\n",f[1][n]);return 0;
}
/**/

Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp相关推荐

  1. Codeforces Round #715 (Div. 2)

    Codeforces Round #715 (Div. 2) 题号 题目 知识点 A Average Height B TMT Document C The Sports Festival 区间dp ...

  2. Codeforces Round #715 (Div. 1) B. Almost Sorted 找规律

    传送门 文章目录 题意: 思路: 题意: 思路: 找规律yydsyydsyyds. 一看没什么想法,所以打了个表,好家伙,不打不知道,一打不得了,下面是n=6n=6n=6的符合要求的情况: 不难发现, ...

  3. Codeforces Round #715 (Div. 1) C. Complete the MST 补图 + 思维 + 最小生成树

    传送门 文章目录 题意: 思路 题意: 给你一张nnn个点mmm个边的图,mmm条边是给定的,要求你给未给定的边赋值一个边权,使得所有边权异或和为000,求所有满足这种情况的图中最小生成树边权和最小的 ...

  4. Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes kmp + dp

    传送门 文章目录 题意: 思路: 题意: 思路: 通过完美子串的定义,我们不难发现满足条件的子串就是kmpkmpkmp中ne[n]ne[n]ne[n]不断向前跳得到的串,现在问题就是如何求这些前缀串在 ...

  5. Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp

    传送门 文章目录 题意: 思路: 题意: n≤200n\le200n≤200 思路: 明显的树形dpdpdp,所以考虑一下dpdpdp状态. 这个题状态挺神的..可能是因为我太菜了,看了半天才看懂. ...

  6. Codeforces Round #620 (Div. 2) F2. Animal Observation (hard version) dp + 线段树

    传送门 文章目录 题意: 思路: 题意: 比如下面这个图: 思路: 对于这个题,比较容易就能考虑到dpdpdp,设f[i][j]f[i][j]f[i][j]为到了第iii行,覆盖了[j,j+k−1][ ...

  7. 【竞赛题解】Codeforces Round #715 (Div. 2) C

    C. The Sports Festival 题意:对于给定的整型数组aaa,每次选择其中一个元素aia_iai​(不能重复选择同一元素),每次计算已选择的元素的极差(最大元素减最小元素的差),输出最 ...

  8. Codeforces Round #715 (Div. 2) D. Binary Literature 构造

    传送门 文章目录 题意: 思路: 题意: 给你个nnn和三个长度为n∗2n*2n∗2的串,让你构造一个长度≤n∗3\le n*3≤n∗3的串,使其子序列包含至少两个给定串. 思路: 先考虑如果没有长度 ...

  9. Codeforces Round #715 (Div. 2) B. TMT Document——思路分析,清晰易懂

    题目链接 文章目录 题目大意: 思路 AC代码 题目大意: 能否把只含T和M的字符串分成,若干个TMT的子序列,原字符串长度是3的倍数 思路 我们看TMT这个串,M前面要有一个T,M后面也要有一个T, ...

最新文章

  1. 微软私有云Azure Pack实践系列之三创建虚拟机角色
  2. android中常用的快捷键
  3. JAVA并发编程JUC基础学习(简介)
  4. STM32F1 GPIO工作原理初探
  5. java中update_Java 7 Update 21安全改进的详细信息
  6. angular-cli构建
  7. 产品报价单模板_外贸干货 | 外贸人的好东西,报价单这样做才专业!
  8. 【Flink】Flink1.11.2 on YARN滚动日志配置
  9. 年后跳槽必备的 Java 题库,全网最全!
  10. 双时隙的工作原理_提高频点利用 海能达双时隙功能效率高
  11. 微信公众平台回复音乐
  12. HttpClient Util 工具
  13. RHEL6/7 下安装 devtoolset-3/4
  14. 线上故障之-CPU飙高
  15. kettle Call From LAPTOP-14BPR3NI/192.168.1.2 to locahost:8020 failed on connection
  16. 实战 | 我是怎么定位问题的?
  17. vue3中Provide/Inject的使用
  18. 整流电路 简答题与计算题
  19. Ubuntu没有无线wifi解决办法
  20. bing每日壁纸客户端

热门文章

  1. COMA(一): Learning to Communicate with Deep Multi-Agent Reinforcement Learning 论文讲解
  2. 一秒点击屏幕次数测试_安卓App性能专项测试流畅度深度解析
  3. 几何学中关于相交圆的这个定理,你还记得吗?
  4. 论文排版怕翻车?这个排版神器赶紧用起来!
  5. 学习爬虫限时只需9.9,还在犹豫什么?
  6. python docx 字体大小_聊聊python办公自动化之Word(上)
  7. drbd heartbeat mysql_Heartbeat+DRBD+MySQL Replication故障处理
  8. 达梦数据查询编码_查询数据库的编码方式
  9. python的基础知识可以应用到哪方面-Python基础知识
  10. python中的while语句怎么居中_python基础之while语句操作