#include<bits/stdc++.h>
using namespace std;
int n,m,a[201][201],ans=-9999,add;
bool b[201][201];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
a[i][0]=-9999;
for(int i=1;i<=n;i++)
a[i][m+1]=-9999;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
b[n+1][m/2+1]=1;
for(int i=n;i>0;i--)
for(int j=1;j<=m;j++)
if(b[i+1][j-1]||b[i+1][j]||b[i+1][j+1])
b[i][j]=1;
else a[i][j]=-9999;
/* for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cout<<b[i][j]<<" ";
cout<<"\n";
}*/
for(int i=n;i>0;i--)
for(int j=1;j<=m;j++)
if(b[i][j])
{
add=max(a[i+1][j],max(a[i+1][j-1],a[i+1][j+1]));
a[i][j]+=add;
}
for(int i=1;i<=m;i++)
ans=max(ans,a[1][i]);
cout<<ans;
return 0;
}
附:测试点8
输入:
200 1
51929
23997
58087
79843
-37820
46246
43393
7911
84801
49817
32410
-70848
16690
-54308
52261
5206
48565
22469
31141
-61868
-48992
2982
-45096
73435
-83328
70074
84502
60267
-80104
38034
-44492
44182
-77388
38467
-30640
-64404
-9084
88629
-31420
28246
8778
-63500
40627
12398
-6508
22102
33173
86291
27983
80299
-59184
-836
57898
41954
75934
9279
12663
87135
70147
47123
49550
25690
19854
62927
84810
72310
20019
-44284
68178
27182
71257
-44748
-3144
4354
-3232
930
40053
-26672
-41288
87390
40434
-57828
77037
25994
39550
71322
-57940
58143
16893
44203
82159
33481
-9376
81347
-79652
86517
66705
7385
73469
79925
-50876
-59144
83742
78067
5279
7302
61802
74143
85106
36990
-65604
22098
-86728
29058
20807
47190
-84540
78045
66883
-23120
-6228
-35736
-24816
-88488
-31744
88218
50511
-55520
82407
36125
59842
37278
-25040
-84228
6863
42981
-19872
43289
-60352
-4860
19746
71046
65047
-72308
87151
-19012
26207
49387
22754
38379
61369
52289
87647
-20736
36899
31225
28627
60711
38621
39553
13606
53995
24822
49223
-16944
29998
-37140
2037
72471
76822
16189
-88480
73469
2102
-15632
16493
28627
22681
37614
30174
-52788
40007
-87452
71322
64309
82434
42839
-74284
-85536
-5052
53321
24730
50466
30139
45407
71941
30065
52746
22726
51597
输出:
4041248
自己测的明明正确【哭】