关闭

[区间DP 中位数] BZOJ 2933 [Poi1999]地图 Map

180人阅读 评论(1) 收藏 举报
分类:

区间DP没什么好想的  mn2也懒得优化了

中位数 这个递推好啊


P[i,j]有定义式为

P[i,j]=Sum{ Abs( S[k]-Mid(i,j) ) | i<=k<=j } (Mid(i,j)为S[i]..S[j]的中值)

但是如果我们直接这样求,时间复杂度高达O(N^3 + N^2*M),关键在于求P[i,j]时浪费了太多时间。其实我们可以递推求出P[i,j]。

递推式

P[i,j]=P[i+1,j] + Mid(i,j) - S[i]

边界

P[i,i]=0

来自BYVOID %%%


#include<cstdio>  
#include<cstdlib>  
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;

const int N=3005;
const int M=15;

int n,m;  
ll a[N],f[N][M],w[N][N];

int main(){
  freopen("t.in","r",stdin);
  freopen("t.out","w",stdout);
  scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) scanf("%lld",&a[i]);  
  sort(a+1,a+1+n);  
  for (int j=1;j<=n;j++)
    for (int i=j-1;i;i--) 
      w[i][j]=w[i+1][j]+a[((i+1)+j)/2]-a[i];
  memset(f,0x3f,sizeof(f));
  f[0][0]=0;
  for (int i=1;i<=n;i++)
    for (int j=1;j<=m;j++)
      for (int k=0;k<i;k++)  
	f[i][j]=min(f[i][j],f[k][j-1]+w[k+1][i]);
  printf("%lld\n",f[n][m]);
  return 0;  
}  




0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

区间DP入门之 石子归并问题

题目描述:有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最...
  • wuxuanyi27
  • wuxuanyi27
  • 2016-04-21 21:40
  • 850

动态规划学习系列——区间DP(一)

学习一个算法,还是从题目开始比较好,我们就从一道经典例题开始: wikioi 1048 石子归并 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相...
  • fuyukai
  • fuyukai
  • 2015-02-13 17:13
  • 809

区间DP 入门经典三道题

NYOJ 737:http://acm.nyist.net/JudgeOnline/problem.php?pid=737 代码:#include #include #include #def...
  • SolarDomo
  • SolarDomo
  • 2016-08-15 14:17
  • 480

【数位DP】BZOJ3780数字统计

Time Limit: 10 Sec Memory Limit: 128 MB Description 小A正在研究一些数字统计问题。有一天他突然看到了一个这样的问题: 将[L..R][L.....
  • cqbztsy
  • cqbztsy
  • 2016-02-26 12:20
  • 682

dp 计数问题 复杂整数划分 区间dp

百练的题目 : 让我对dp有了新体会 这是记忆化搜索写法 省了很多时间 并且状态转移的方式符合我们的认知  这个通过递推很难发现关系 但是讲区间搜索一下分解的话就可以计数了 并且在不影响结果的前提下自...
  • qq_34271269
  • qq_34271269
  • 2016-07-19 21:32
  • 349

区间dp模型(石子归并,括号匹配,整数划分)

区间dp顾名思义就是在一个区间上进行的一系列动态规划。对一些经典的区间dp总结在这里。 1) 石子归并问题 题目链接:http://acm.nyist.edu.cn/JudgeOnline/p...
  • y990041769
  • y990041769
  • 2014-04-20 21:51
  • 16243

HDU 1227 dp距离和最小,中位数的应用

在n个商店中建m个仓库,使各个商店到仓库的路程之和最小,商店到哪个仓库是有选择的, 总之路程之和要最小! 思路: 从第i个商店到第j个商店建一个仓库,这个仓库所建的位置一定是dis[(i+j)/2...
  • became_a_wolf
  • became_a_wolf
  • 2016-05-06 20:35
  • 435

插头DP学习小结

插头dp一般可以解决一类需要记录联通状态的题目(比如一个棋盘求满足某某条件的路径等)。定义插头一个格子如果与它正上方的格子联通,则有一个上插头,下左右亦然。轮廓线我们解决问题的时候,一般是外循环从上到...
  • WorldWide_D
  • WorldWide_D
  • 2017-02-23 15:28
  • 597

[swust]Fighting for the 2017 season contest 7 雀巢原理,并查集,离线BIT,中位数,前缀和,贪心,背包DP

A,HDU 3951 题意:n个硬币放成一圈,每次最多取连续k个,不能不取。最后取完者胜。 解法:一个非常容易想到的博弈了。n个硬币,不论n是奇数偶数,后手总能够在第一轮把它变成对称两部分的状态...
  • just_sort
  • just_sort
  • 2017-03-05 16:30
  • 960

BZOJ 题目3211: 花神游历各国(线段树区间减为平方根,区间求和)

3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 1541  Solved: 585 [Submit][Status][D...
  • yu_ch_sh
  • yu_ch_sh
  • 2015-09-02 11:56
  • 271
    个人资料
    • 访问:337091次
    • 积分:12744
    • 等级:
    • 排名:第1262名
    • 原创:975篇
    • 转载:3篇
    • 译文:0篇
    • 评论:54条
    文章分类
    最新评论