Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
74750 | cy | 抄近路 | C++ | 通过 | 100 | 9 MS | 10332 KB | 731 | 2023-04-14 20:58:48 |
#include<bits/stdc++.h> #include<queue> #include<stack> using namespace std; typedef long long ll; double dp[1145][1145]; bool p[1145][1145]; int main(){ int m,n; cin>>m>>n; int k; cin>>k; int x,y; for(int i=1;i<=k;i++){ cin>>x>>y; p[x][y]=1; } for(int j=1;j<=m;j++){ dp[j][0]=100000; } for(int j=1;j<=n;j++){ dp[0][j]=100000; } for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ if(i==1&&j==1)continue; if(p[i-1][j-1]){ dp[i][j]=min(dp[i-1][j]+100,min(dp[i-1][j-1]+141.42,dp[i][j-1]+100)); }else{ dp[i][j]=min(dp[i-1][j]+100,dp[i][j-1]+100); } } } if(p[m][n]){ dp[m][n]+=141.42; }else{ dp[m][n]+=200; } cout<<int(dp[m][n]+0.5); return 0; }