URAL1119 Metro
来源:互联网 发布:被男朋友舔到高潮 知乎 编辑:程序博客网 时间:2024/05/04 23:24
没什么好说的,动态规划吧,注意到达每一个点可以从三个方向(如果有斜径的话)
/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2011-12-03 20:20 # Filename: URAL1119 Metro.cpp # Description : ******************************************************************************/// #include "stdafx.h"// #define DEBUG#include <fstream>#include <stdio.h>#include <iostream>#include <string.h>#include <string>#include <memory.h>#include <limits.h>#include <algorithm>#include <math.h>#include <float.h>using namespace std;struct QUARTER{ int x,y;}quarters[110];bool inline cmp(const QUARTER &lhs,const QUARTER &rhs){ if(lhs.x==rhs.x) return lhs.y<rhs.y; else return lhs.x<rhs.x;}int main(void){#ifdef DEBUG freopen("C:/Users/neo/Desktop/stdin.txt","r",stdin); freopen("C:/Users/neo/Desktop/stdout.txt","w",stdout); #endif const double sqrt_2 = sqrt(2.0)*100.0; int n,m,k; double dp[1010],pre[1010]; while(~scanf("%d %d",&n,&m)) { scanf("%d",&k); for(int i=0;i<k;++i) scanf("%d%d",&quarters[i].x,&quarters[i].y); sort(quarters,quarters+k,cmp); int ind=0; for(int i=0;i<=m;++i) pre[i]=i*100.0; for(int i=1;i<=n;++i) { dp[0]=i*100; for(int j=1;j<=m;++j) dp[j]=DBL_MAX; while(quarters[ind].x==i && ind<k) { dp[quarters[ind].y]=min(dp[quarters[ind].y-1]+100,min(pre[quarters[ind].y]+100.0,pre[quarters[ind].y-1]+sqrt_2)); ++ind; } for(int i=1;i<=m;++i) dp[i]=min(dp[i-1]+100,min(dp[i],pre[i]+100.0)); memcpy(pre,dp,sizeof(dp)); } printf("%d\n",(int)(dp[m]+0.5)); } return 0;}
- URAL1119 Metro
- Metro
- Metro
- Metro
- win8 metro
- metro client
- metro 尝新
- Metro UI
- metro serialize
- win8 metro
- Metro(Ural_1119)
- 使用Metro Studio制作Metro样式图标
- Windows8 Metro开发 (01) : Metro应用程序生命周期
- Sun Metro分析
- Geoserver发布metro服务
- Metro of SH
- ural 1119. Metro
- Metro-用户手册-目录
- Fedora 10 虚拟机安装
- 有关编程的截止期限
- dip-data-analyze 使用的hiveserver 实践之 jvm调优
- 放弃与拥有
- JavaScript delete操作符&&javascript中数组元素删除问题的讨论
- URAL1119 Metro
- jsp如何获得web包含协议以及web跟路径的全路径
- sqlite3 常用操作 sqlite 基本命令
- signed char shifting issue
- 11月工作小结(统计分析报表的一些心得体会)
- Oracle中实现查询结果按照in中条件排序 InStr函数
- VC++ 2010 创建高级Ribbon界面详解(1)
- Android_三种菜单介绍
- VC++ 2010 创建高级Ribbon界面详解(2)