记忆化搜索https://ac.nowcoder.com/acm/contest/102742/D
include<bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m,g[N][N],ans,t,ti[N][N],f[N][N];
bool st[N][N];
int np[2][2]={{1,0},{0,1}};
int dfs(int p,int x,int y){
if(f[x][y]!=0) return f[x][y];
for(int i=0;i<2;i++){
int nx=np[i][0]+x;
int ny=np[i][1]+y;
if(p<ti[nx][ny] &&nx>=1 &&nx<=n&&ny>=1&&ny<=m ){
f[x][y]=max(f[x][y],dfs(p+1,nx,ny)+g[nx][ny]);
}
}
return f[x][y];
}
int main(){
cin>>n>>m;
memset(ti,0x3f,sizeof ti);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>g[i][j];
}
}
cin>>t;
for(int i=1;i<=t;i++){
int a,b,c;
cin>>a>>b>>c;
ti[a][b]=c;
}
cout<<dfs(1,1,1)+g[1][1];
return 0;
}
浙公网安备 33010602011771号