首页 > 代码库 > DP整理

DP整理

1.Likecloud-吃、吃、吃

(做过最水的DP题)

技术分享

大意:求最优树状路径

Code:

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #define ll long long
 4 using namespace std;
 5 const int maxn=210;
 6 ll n,m,a[maxn][maxn],f[maxn][maxn];
 7 inline ll max(ll a,ll b)
 8 {
 9     return a>b?a:b;
10 }
11 inline void read(ll &k)
12 {
13     ll f=1;char c=getchar();k=0;
14     while (c<0||c>9)c==-&&(f=-1),c=getchar();
15     while (c>=0&&c<=9)k=k*10+c-0,c=getchar();
16     k*=f;
17 }
18 int main()
19 {
20     read(m);read(n);
21     for (int i=1;i<=m;i++)
22     for (int j=1;j<=n;j++)
23     read(a[i][j]);
24     for (int i=1;i<=n;i++)f[1][i]=a[1][i];
25     for (int i=2;i<=m;i++)
26     for (int j=1;j<=n;j++)
27     f[i][j]=max(max(f[i-1][j],f[i-1][j-1]),f[i-1][j+1])+a[i][j];
28     printf("%lld\n",max(max(f[m][n>>1],f[m][(n>>1)+1]),f[m][(n>>1)+2]));
29 }
View Code

 

DP整理