四边形优化模板
来源:互联网 发布:加内特季后赛数据 编辑:程序博客网 时间:2024/05/16 16:16
一般适用于区间dp优化。
/*对于dp[i][j]=dp[i][k]+d[k][j]+w[i][j]的dp方程,如果满足w[i][j]+w[i'][j']<=w[i'][j]+w[i][j'] (i'<=i<=j<=j')则w[i][j]是凸的,也就是说,对于dp[i][j]的决策s[i][j],必然满足不等式s[i][j-1]<=s[i][j]<=s[i+1][j].所以求决策时只需要循环从s[i][j-1]到s[i+1][j]就行,然后求s[i][j],注意循环长度。 区间dp一般用四边形优化 */#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int dp[1005][1005];int s[1005][1005];struct pi{ int x; int y;}pp[1005];int main(){ int i,j,n,m,k; while(scanf("%d",&n)!=EOF){ memset(dp,0x3f,sizeof(dp)); memset(s,0,sizeof(s)); for(i=1;i<=n;i++) {scanf("%d%d",&pp[i].x,&pp[i].y); s[i][i]=i; dp[i][i]=0; } for(i=1;i<=n-1;i++){//四边形优化一定要优化长度 for(j=1;j+i<=n;j++){ for(k=s[j][j+i-1];k<=s[j+1][j+i];k++){ m=pp[k].y-pp[j+i].y+pp[k+1].x-pp[j].x; if(dp[j][j+i]>dp[j][k]+dp[k+1][j+i]+m){ dp[j][j+i]=dp[j][k]+dp[k+1][j+i]+m; s[j][j+i]=k; } } } } printf("%d\n",dp[1][n]); }}
0 0
- 四边形优化模板
- 四边形优化
- 四边形不等式优化
- POJ1160-四边形不等式优化
- hdu 四边形优化dp
- hdu2829 四边形优化dp
- 四边形不等式优化
- 四边形优化dp
- dp四边形优化
- 四边形不等式优化DP
- hdu3516 --- 四边形不等式优化
- hdu3506(dp四边形优化)
- hdu3516(dp四边形优化)
- 石子合并+四边形优化
- 石子合并-四边形优化
- 四边形不等式优化
- 四边形不等式优化
- ccfcsp201612-四边形不等式优化
- 全排列和组合问题
- 调和级数求和
- 三维扫描线
- 斜率dp模板
- Java学习之路--------基础才是硬道理(1)
- 四边形优化模板
- 高斯消元 开关类问题(异或方程)
- C# WinForm开发系列 - Controls
- 0代码、不编程—交互式网页设计工具VXPLO
- 如何利用互联网工具深入调研你仰慕已久的网站
- 任何情况下请通过正规渠道变更信用卡额度
- shiro安全框架扩展教程--如何扩展实现我们的缓存机制(第三方容器redis,memcached)
- TortoiseSVN菜单项功能说明
- C++线程池原理及创建(转)