bzoj 2933(区间dp)
来源:互联网 发布:电视直播软件pc版 编辑:程序博客网 时间:2024/05/29 08:02
传送门
题解:先按照a排序,预处理前缀和,然后预处理区间代价(每次贪心地选中位数然后计算),最后dp一次即可。dp[i][j]表示前i个地区分成j个颜色的最小代价。
吐槽一下,有位大哥做bzoj3065一道时限60秒的题TLE了8次算不算卡评测啊(╯‵□′)╯︵┻━┻
#include<bits/stdc++.h>using namespace std;typedef long long ll; int n,m;ll dp[3002][12],w[3002][3002],a[3002],sum[3002]={0};int main() {// freopen("bzoj 2933.in","r",stdin); scanf("%d%d",&n,&m); for (int i=1;i<=n;++i) scanf("%lld",&a[i]); sort(a+1,a+n+1); for (int i=1;i<=n;++i) sum[i]=sum[i-1]+a[i]; for (int i=1;i<=n;++i) for (int j=i;j<=n;++j) { int mid=(i+j)>>1; w[i][j]=a[mid]*(mid-i)-(sum[mid-1]-sum[i-1])-a[mid]*(j-mid)+(sum[j]-sum[mid]); } memset(dp,127,sizeof(dp)); dp[0][0]=0; for (int i=1;i<=n;++i) for (int j=1;j<=m;++j) for (int k=0;k<i;++k) dp[i][j]=min(dp[i][j],dp[k][j-1]+w[k+1][i]); printf("%lld\n",dp[n][m]); return 0;}
阅读全文
0 0
- bzoj 2933(区间dp)
- bzoj 1996(区间dp)
- bzoj 1070(区间dp)
- BZOJ 2933([Poi1999]地图-区间Dp)
- BZOJ 1068 压缩 (区间dp)
- 【bzoj 3379】交作业(区间DP)
- 【bzoj 1055】玩具取名(区间DP)
- BZOJ 2037 区间DP
- 区间DP BZOJ 1260
- [区间DP 中位数] BZOJ 2933 [Poi1999]地图 Map
- BZOJ 2037 Sue的小球(区间DP)
- BZOJ 1090 [SCOI 2003] 字符串折叠 (区间DP)
- bzoj 1055 [HAOI2008]玩具取名(区间DP)
- bzoj 1032: [JSOI2007]祖码Zuma(区间DP)
- bzoj 1055: [HAOI2008]玩具取名(区间DP)
- BZOJ 4565 字符合并 (区间状压dp)
- bzoj 1260: [CQOI2007]涂色paint(区间DP)
- BZOJ 1090 [SCOI2003]字符串折叠 区间DP
- 【激光雷达】——什么是激光雷达?
- 210. Course Schedule II
- Java web开发中常用到的jar包简介
- linux工作与进程管理
- c#linq里的Skip和Take处理分页笔记
- bzoj 2933(区间dp)
- loadrunner Web_类函数之web_service_call()
- WebGL三角形旋转变换
- java学习第五天
- css中两个类选择器之间有没有空格的区别
- java重构(一)
- mybatis遇到的mapper.xml的链表是容易出的错
- centos7 编译 nginx
- APP UI设计的全局思维