题意:
解法:
一开始旋转操作的那张图没读懂,其实是这样的:
其实就是将四块L*L的矩形顺时针旋转一步。
code:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=2e3+5;
int a[maxm][maxm];
int b[maxm][maxm];
int d[maxm][maxm];
int n,m;
signed main(){
ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
while(m--){
int x,y,l;cin>>x>>y>>l;
for(int i=x;i<=x+l-1;i++){
for(int j=y;j<=y+l-1;j++){
int t=a[i][j];
a[i][j]=a[i+l][j];
a[i+l][j]=a[i+l][j+l];
a[i+l][j+l]=a[i][j+l];
a[i][j+l]=t;
}
}
}
d[1][1]=a[1][1];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i+1<=n)d[i+1][j]=max(d[i+1][j],d[i][j]+a[i+1][j]);
if(j+1<=n)d[i][j+1]=max(d[i][j+1],d[i][j]+a[i][j+1]);
}
}
cout<<d[n][n]<<endl;
return 0;
}