POJ 3666 DP
2024-08-31 14:20:43
题意:
思路:
dp[i][j] 表示前i + 1个数变成单调且最后一个数是B[j],此时的最小成本
dp[i][j] = min(dp[i – 1][k]) + |A[i] – B[j]| 【k = 0->j】
但是我们发现现在的复杂度是O(n^3) 卡不过去
怎么优化呢
保存个最小值不就行了嘛….复杂度O(n^2)
Ps:这道题可以优化空间…
//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 2222
int n,a[N],b[N],c[N],f[N][N],ans=0x7fffffff;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),b[i]=a[i];
sort(b+1,b+1+n);
for(int i=1;i<=n;i++)c[i]=lower_bound(b+1,b+1+n,a[i])-b;
memset(f,0x7f,sizeof(f));
for(int i=1;i<=n;i++)f[0][i]=0;
for(int i=1;i<=n;i++){
int minn=0x7fffffff;
for(int j=1;j<=n;j++){
minn=min(minn,f[i-1][j]);
f[i][j]=minn+abs(b[j]-b[c[i]]);
}
}
for(int i=1;i<=n;i++)ans=min(ans,f[n][i]);
printf("%d\n",ans);
}
优化空间的版本~
//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 2222
int n,a[N],b[N],c[N],f[2][N],ans=0x7fffffff;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),b[i]=a[i];
sort(b+1,b+1+n);
for(int i=1;i<=n;i++)c[i]=lower_bound(b+1,b+1+n,a[i])-b;
memset(f,0x7f,sizeof(f));
for(int i=1;i<=n;i++)f[0][i]=0;
for(int i=1;i<=n;i++){
int minn=0x7fffffff;
for(int j=1;j<=n;j++){
minn=min(minn,f[(i+1)%2][j]);
f[i%2][j]=minn+abs(b[j]-b[c[i]]);
}
}
for(int i=1;i<=n;i++)ans=min(ans,f[n%2][i]);
printf("%d\n",ans);
}
最新文章
- asp.net mvc 之旅—— 第四站 学会用Reflector调试我们的MVC框架代码
- 安利eclipse插件之log4E
- jQuery实现在线文档
- HTTP POST上传文件(wininet实现)
- hdu2073递推题
- Android AsyncTask学习
- AFNetworking之多图片-文件上传
- (简单) HDU 5154 Harry and Magical Computer,图论。
- css3---线性渐变
- struts2.0的工作原理?
- --------------Hibernate学习(四) 多对一映射 和 一对多映射
- 介绍一种非常好用汇总数据的方式GROUPING SETS
- Java自定义类加载和ClassPath类加载器
- VS2008 编译 libpng库
- Maven项目的结构分析
- ceph luminous 新功能之内置dashboard 之 mgr功能模块配置
- 转:查看linux系统版本号
- java8 - 3
- 网站漏洞扫描工具Uniscan
- hdu 4403 爆搜
热门文章
- 数据共享之相互排斥量mutex
- Java的接口总结
- 为powerpc交叉编译nginx
- [Struts2] No result defined for action ... and result input &;amp; Invalid field value for field ...
- php利用href进行页面传值的正确姿势
- ios修改了coredata数据结构后,更新安装会闪退
- hdoj--4325--Flowers(线段树+二分)
- CentOS7设置中文输入法
- ie浏览器下get方式获取数据无效问题
- HD-ACM算法专攻系列(6)——Big Number