zoukankan      html  css  js  c++  java
  • HihoCoder

    HihoCoder - 1617

    (从群主那里借鉴来的, 群主好强啊)

    题意:中文题不解释。。。

    题解: dp[X][i][j] 代表的是X是坐标之和 第一个人 走到位置 dp[i][x-i] 第二个人 走到位置 dp[j][x-j] 所到达的最大值。

    然后 dp[x][i][j] 可以从 dp[i-1][x-1-(i-1)] + dp[j-1][x-1-(j-1)] ,dp[i][x-1-i]+dp[j-1][x-1-(j-1)], dp[i-1][x-1-(i-1)] + dp[j-1][x-1-(j-1)], dp[i][x-1-i] + dp[i][x-1-i]四种位置走过来, 然后取最大就好了。

    代码:

     1 #include<iostream>
     2 #include<cstring>
     3 #include<string>
     4 #include<queue>
     5 #include<vector>
     6 #include<map>
     7 #include<algorithm>
     8 #include<cmath>
     9 #include<iomanip>
    10 #include<cstdio>
    11 #define LL long long
    12 #define ULL unsigned LL
    13 #define lson l,m,rt<<1
    14 #define rson m+1,r,rt<<1|1
    15 #define fi first
    16 #define se second
    17 using namespace std;
    18 const int N = 205;
    19 int dp[N<<1][N][N];
    20 int a[N][N];
    21 int main(){
    22     int n;
    23     scanf("%d", &n);
    24     for(int i = 1; i <= n; i++)
    25         for(int j = 1; j <= n; j++)
    26             scanf("%d", &a[i][j]);
    27     dp[3][2][1] = a[1][1] + a[2][1] + a[1][1] + a[1][2];
    28     for(int i = 4; i <= n+n-1; i++)
    29         for(int j = 1; j < min(n+1,i); j++)
    30             for(int k = 1; k < j; k++){
    31                 dp[i][j][k] = max(dp[i][j][k], dp[i-1][j-1][k]);
    32                 dp[i][j][k] = max(dp[i][j][k], dp[i-1][j][k]);
    33                 dp[i][j][k] = max(dp[i][j][k], dp[i-1][j][k-1]);
    34                 dp[i][j][k] = max(dp[i][j][k], dp[i-1][j-1][k-1]);
    35                 dp[i][j][k] = dp[i][j][k] + a[j][i-j] + a[k][i-k];
    36             }
    37     printf("%d", dp[n+n-1][n][n-1]+a[n][n]+a[n][n]);
    38     return 0;
    39 }
  • 相关阅读:
    HDU 1009 FatMouse' Trade
    python正则表达式
    Python学习week5
    Python学习week4
    Python学习week3
    Python学习week2
    Python学习week1
    生活的艰辛(最小割,最大密度子图)
    最大获利(最小割,最大权闭合图,最大密度子图)
    最大密度子图
  • 原文地址:https://www.cnblogs.com/MingSD/p/8505071.html
Copyright © 2011-2022 走看看