本机下载测试点通过,洛谷及网上其他IDE答案错误。
#include<bits/stdc++.h>
#define maxn 1003
using namespace std;
struct node{
int x,y;
}a[maxn],b[maxn];
int emc(int at,int bt){
return (a[at].x-b[bt].x) * ((a[at].x-b[bt].x)) + (a[at].y-b[bt].y) * (a[at].y-b[bt].y);
}
int atot,btot;
int f[maxn][maxn];
int main(){
// freopen("p3133.in","r",stdin);
// freopen("p3133.out","w",stdout);
int n,m;
string s1,s2;
scanf("%d %d %d %d %d %d",&n,&m,&a[0].x,&a[0].y,&b[0].x,&b[0].y);
// cin>>n>>m;
// cin>>a[0].x>>a[0].y;
// cin>>b[0].x>>b[0].y;
cin>>s1;
cin>>s2;
for (int i=1;i<=n;i++){
if (s1[i-1] == 'E') a[++atot].x=a[atot-1].x+1 ,a[atot].y=a[atot-1].y;
if (s1[i-1] == 'S') a[++atot].y=a[atot-1].y-1 ,a[atot].x=a[atot-1].x;
if (s1[i-1] == 'W') a[++atot].x=a[atot-1].x-1 ,a[atot].y=a[atot-1].y;
if (s1[i-1] == 'N') a[++atot].y=a[atot-1].y+1 ,a[atot].x=a[atot-1].x;
}
for (int i=1;i<=m;i++){
if (s2[i-1] == 'E') b[++btot].x=b[btot-1].x+1 ,b[btot].y=b[btot-1].y;
if (s2[i-1] == 'S') b[++btot].y=b[btot-1].y-1 ,b[btot].x=b[btot-1].x;
if (s2[i-1] == 'W') b[++btot].x=b[btot-1].x-1 ,b[btot].y=b[btot-1].y;
if (s2[i-1] == 'N') b[++btot].y=b[btot-1].y+1 ,b[btot].x=b[btot-1].x;
}
for (int i=1;i<=n;i++) f[i][0] = emc(i,0)+f[i-1][0];
for (int i=1;i<=m;i++) f[0][i] = emc(0,i)+f[0][i-1];
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
f[i][j] = min(f[i-1][j] , min(f[i][j-1] , f[i-1][j-1])) + emc(i,j);
}
}
cout<<f[n][m];
return 0;
}
/*
2 7
3 0
5 0
NN
NWWWWWN
*/
std:cout那些都试过了,还是没对一个点