标签:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int inf = 0x3f3f3f3f;
double dp[1005][1005];
int map1[1005][1005];
int main()
{
int n,m,k,x,y;
while(~scanf("%d%d",&n,&m)){
scanf("%d",&k);
memset(map1,0,sizeof(map1));
for(int i = 1; i <= k ;i++){
scanf("%d%d",&x,&y);
map1[x+1][y+1] = 1;
}
for(int i = 0; i <= n+1; i++)
for(int j = 0; j <= m+1; j++)
dp[i][j] = inf;
dp[1][1] = 0;
for(int i = 1; i <= n+1; i++){
for(int j = 1 ; j <= m+1 ;j++){
if(i == 1 && j == 1)
continue;
if(map1[i][j] == 1)
dp[i][j] = min(min(dp[i][j-1]+100,dp[i-1][j]+100),dp[i-1][j-1]+100*sqrt(2));
else dp[i][j] = min(dp[i][j-1]+100,dp[i-1][j]+100);
}
}
printf("%.0lf\n",dp[n+1][m+1]);
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/zero-begin/p/4483074.html