Hdu 4824 Disk Schedule (双调欧几里得旅行商问题)
来源:互联网 发布:select js 选中value 编辑:程序博客网 时间:2024/05/16 06:32
2014百度之星资格赛1002
Poj 2677 和 Hdu 2224 也都是这类问题。学习资料:
POJ2677 DP tour 双调欧几里得旅行商问题 - _sunshine - 博客园
【算法学习】双调欧几里得旅行商问题(动态规划) - 江南烟雨 - 博客频道 - CSDN.NET
分析:首先,由于跳转一次磁道的消耗比在磁道上旋转一周还要大,所以尽量避免跳转磁道。那么最少的跳转方式,就是从0跳转到需要访问的最顶上的磁道,再从那里跳回来。
于是一来一回就成为了双调欧几里得旅行商问题的模型。
这题代码估计是我写复杂了,400+ms过的,看到有人的代码可以100+ms……
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define max(a,b) ((a)>(b)?(a):(b))#define max3(a,b,c) (max(a,max(b,c)))#define min(a,b) ((a)<(b)?(a):(b))const int N=1005;struct Point{ int road,area; void Get () { scanf("%d%d",&road,&area); } int Dis (Point b) { int tmp=fabs(b.area-area); return 400*fabs(b.road-road)+min( tmp,360-tmp); }}data[N];int dis[N][N];int dp[N][N];int main (){ int T,i,j,n; scanf("%d",&T); while (T--) { scanf("%d",&n); data[0].area=0; data[0].road=0; memset(dis,0,sizeof(dis)); memset(dp,0,sizeof(dp)); for (i=1;i<=n;i++) data[i].Get(); for (i=0;i<=n;i++) for (j=i+1;j<=n;j++) dis[i][j]=dis[j][i]=data[i].Dis(data[j]); dp[0][0]=0; n++; for (i=1;i<n;i++) dp[i][0]=dis[i][0]; for (i=1;i<n-1;i++) { dp[i+1][i]=1000000000; for (j=0;j<=i-1;j++) { dp[i+1][j]=dp[i][j]+dis[i][i+1]; dp[i+1][i]=min(dp[i+1][i],dp[i][j]+dis[j][i+1]); } } printf("%d\n",dp[n-1][n-2]+dis[n-1][n-2]+10*(n-1)); } return 0;}
0 0
- hdu 4824 Disk Schedule(双调欧几里得旅行商问题)
- Hdu 4824 Disk Schedule (双调欧几里得旅行商问题)
- hdu 4824 Disk Schedule双调欧几里得旅行商问题(dp)
- 2014百度之星第二题Disk Schedule(双调欧几里得旅行商问题+DP)
- hdu 4824 Disk Schedule 双调欧几里得 (TSP类)
- 2014年百度之星程序设计大赛 - 资格赛 1002 Disk Schedule(双调欧几里得旅行商问题)
- 百度之星资格赛——Disk Schedule(双调旅行商问题)
- 百度之星资格赛——Disk Schedule(双调旅行商问题)
- hdu 2224 双调欧几里得旅行商问题tsp
- 双调欧几里得旅行商问题 hdu 2224 |hdu 4824 [动态规划]
- -双调欧几里得旅行商问题
- 双调欧几里得旅行商问题
- 双调欧几里得旅行商问题
- 算法 - 双调欧几里得旅行商问题
- “双调欧几里得旅行商问题”详解
- HDU 4824 Disk Schedule
- HDU 4824 Disk Schedule
- HDU 2224 The shortest path(双调欧几里得旅行商问题)
- 一头乱麻
- SVN备份脚本
- 用Ant实现Java项目的自动构建和部署
- 8、Cocos2dx 3.0游戏开发找小三之3.0版本的内存管理
- listview重复调用getView()方法,解决
- Hdu 4824 Disk Schedule (双调欧几里得旅行商问题)
- android调用带soapheader的webservice
- linux shell常用命令
- cocos2d 游戏开发的常用工具汇总(ios的也先收着)
- 如何计算时间复杂度
- android 程序间跳转
- Oracle 数组
- WPF 用ShowDialog的方法显示窗口的返回值
- winform 创建文件,把值写入文件,读取文件里的值,修改文件的值,对文件的创建