vijos 1069 区间DP
来源:互联网 发布:疯狂java博客 编辑:程序博客网 时间:2024/04/30 22:50
这题首先有一个推论,就是最短路径肯定是没有相交的边,所以之可能是一条一条边的向左或者向右拓展
dp【i】【j】【0】 表示遍历从第i个点开始的j+1个点最后落在第i个点的最短距离
dp【i】【j】【1】 表示遍历从第i个点开始的j+1个点最后落在第i+j个点的最短距离
那么
dp[i][j][0] = min( dp[(i+1)%N][j-1][1] + calc_dis( i, ( i + j ) % N ), dp[(i+1)%N][j-1][0] + calc_dis( i, ( i + 1 ) % N ) );dp[i][j][1] = min( dp[i][j-1][1] + calc_dis( ( i + j - 1 ) % N, ( i + j ) % N ), dp[i][j-1][0] + calc_dis( i, ( i + j ) % N ) );
AC代码如下:
#include <iostream>#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;#define MAX 0x3f3f3f3fstruct Node{ double x, y;};double dp[810][810][2];Node node[810];int N;double calc_dis( int i, int j ){ return sqrt( ( node[i].x - node[j].x ) * ( node[i].x - node[j].x ) + ( node[i].y - node[j].y ) * ( node[i].y - node[j].y ) );}int main(){ while( scanf( "%d", &N ) != EOF ){ for( int i = 0; i < N; i++ ){ scanf( "%lf%lf", &node[i].x, &node[i].y ); } for( int i = 0; i < N; i++ ){ dp[i][0][0] = dp[i][0][1] = 0; } for( int j = 1; j < N; j++ ){//注意顺序首先是长度。。。。。。 for( int i = 0; i < N; i++ ){ dp[i][j][0] = min( dp[(i+1)%N][j-1][1] + calc_dis( i, ( i + j ) % N ), dp[(i+1)%N][j-1][0] + calc_dis( i, ( i + 1 ) % N ) ); dp[i][j][1] = min( dp[i][j-1][1] + calc_dis( ( i + j - 1 ) % N, ( i + j ) % N ), dp[i][j-1][0] + calc_dis( i, ( i + j ) % N ) ); } } double ans = 100000000000; for( int i = 0; i < N; i++ ){ ans = min( ans, dp[i][N-1][0] ); ans = min( ans, dp[i][N-1][1] ); } printf( "%.3lf", ans ); } return 0;}
0 0
- vijos 1069 区间DP
- Vijos 1565 多边形 【区间DP】
- vijos 1069 新年趣事之红包(区间DP)
- Vijos 1451 圆环取数 【区间DP】
- Vijos P1100 加分二叉树(区间DP,树形DP)
- vijos多边形(区间dp)dp太弱了
- Vijos P1347 乘积最大(动态规划,区间DP)
- Vijos P1312 能量项链(动态规划,环状DP,区间DP)
- VIJOS 1532 区间
- 区间 (vijos 1439) 题解
- |Vijos|贪心|P1444 区间
- VIJOS-P1312 能量项链 【区间DP--矩阵连乘】
- VIJOS-P1011清帝之惑之顺治<滑雪> 【区间DP--相邻位】
- vijos 1014 DP
- vijos 1002 DP
- vijos 1193 dp
- vijos p1144(树形dp)
- vijos 1159 深搜 + dp
- 贪心算法实现找零问题求解
- LINUX C++ IDE 安装
- 哲学家就餐问题及其一种java多线程实现
- 20140408收盘小结
- 七周项目一,深层复制
- vijos 1069 区间DP
- bsh for android : 天气预报 API
- Hadoop 新 MapReduce 框架 Yarn 详解
- win32(4)
- 车床数控系统界面
- 死循环的另外一种写法
- 找对儿游戏(html5)
- windows 7 (win7) help 帮助文件(.hlp)无法打开的解决
- C++ 重载(overload)、重写(overrride)、重定义(redefine)