(电电鼠与方阵)有一个n*n(2<=n<=5000)的方阵,其中每个方格有一个电力值。小Y可以在这个方阵中得到电力,方法就是在一些方格放上电电鼠来吸收电力,这样就可以获得这些方格上的电力。不过放的电电鼠须要遵循两个规则:1.一个方格最多只能放一只电电鼠:2、所有2*2的子矩阵(共有(n-1)*(n-1)个)必须恰好包含两只电电鼠。小Y用了一个程序求出了能获得的最大总电力值。试补全程序。
finclude<bits/stdc+*.h>
using namespace std;
const int N=5100;
int a ①;
int main(){
int n,ansl.0,ans2-0;
scanf("告d",§n);
for(int i=l;i<=n;i++)
for(int j=l;j<=n;j++)scanf("$d",&a[i][j]);for(int i=l;i<=n;i++){int odd-0,even=0;for(int j=l;j<=n;j++){int x- ② ;
if(j& 1)odd+=x;
else even+-x;
ans1+=max(odd,even);
for(int i=l;i<=n;i++){
int odd=0,even=0;
for(int j=1;j<=n;j++){
int x= ③ ;
if( ④)even+ x;
else odd+=x;
ans2+=max(odd,even);
printf("sdin", );
return 0;
1处应填
[N][2]
[2][N]
[N][1100]
[5100][5100]
2处应填
a[j][i]
a[i][j]
a[i+j][(i+j)&1]
a[(i+j)&1][i+j]
3处应填
a[j][i]
a[i+j][(i+j)&1]
a[i][j]
a[(i+j)&1][i+j]
4处应填
j&1
!(j& 1)
j1 1
!(j11)
5处应填
max(ansl,ans2)
min(ansl,ans2
ansl +ans2
max(ansl,ans2)-min( ansl ,ans2)
发表评论