题解
2025-11-23 17:56:54
发布于:北京
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,k,x,y;
ll a[1005][1005],dp[1005][1005];
bool vis[1005][1005];
int main(){
cin>>n>>k;
for(ll i=1;i<=n;i++) for(ll j=1;j<=n;j++) cin>>a[i][j];
for(ll i=1;i<=k;i++){
cin>>x>>y;
vis[x][y]=true;
}
memset(dp,0xcf,sizeof(dp));
dp[0][1]=dp[1][0]=0;
for(ll i=1;i<=n;i++){
for(ll j=1;j<=n;j++){
if(vis[i][j]) continue;
dp[i][j]=max(dp[i-1][j],dp[i][j-1])+a[i][j];
}
}
if(dp[n][n]<0) dp[n][n]=-1;
cout<<dp[n][n];
return 0;
}
这里空空如也







有帮助,赞一个