[区间DP 中位数] BZOJ 2933 [Poi1999]地图 Map
来源:互联网 发布:安卓传输mac 编辑:程序博客网 时间:2024/05/29 07:12
区间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
- [区间DP 中位数] BZOJ 2933 [Poi1999]地图 Map
- BZOJ 2933([Poi1999]地图-区间Dp)
- bzoj 2933(区间dp)
- BZOJ 2037 区间DP
- 区间DP BZOJ 1260
- bzoj 1996(区间dp)
- bzoj 1070(区间dp)
- [DP 状态稀疏性优化] BZOJ 2925 [Poi1999]单一阿拉伯数字表示法 Monodigital Representations
- BZOJ 1112: [POI2008]砖块Klo 线段树维护区间中位数
- 20161024的考试】noip模拟,dp,区间中位数,值域分块
- BZOJ 1090 [SCOI2003]字符串折叠 区间DP
- BZOJ 1068 [SCOI2007]压缩 区间DP
- BZOJ 1068: [SCOI2007]压缩 区间DP
- 【BZOJ】1260: [CQOI2007]涂色paint 区间dp
- 【bzoj 1090】[SCOI2003]字符串折叠 区间dp
- 【bzoj 1068】[SCOI2007]压缩 区间dp
- 【BZOJ 1068】【SCOI 2007】压缩 【区间DP】
- [BZOJ]1090: [SCOI2003]字符串折叠 区间DP
- LINUX下ECHO命令详解
- 机器学习——决策树
- mysql导入中文数据方法及问题解决
- 第八章—对话框、通知(一)
- python中Numpy包的安装及使用
- [区间DP 中位数] BZOJ 2933 [Poi1999]地图 Map
- 第三章 数据表操作
- Android双击监听
- (随记六)Android设计模式解析与实战_面对对象六大原则之加米特原则
- 【SSLGZ 1500】最短路上的统计
- 第四章 数据基本查询
- insert into select from
- mysql+tomcat+jsp增删改查(四)
- Mini USB接口定义的秘密