zoukankan      html  css  js  c++  java
  • 传递纸条

    问题本质是从左上角到右下角的两条不相交路劲,权值最大

    1--动态规划(二进程动态规划) 或者 网格图费用流

    确定好转移状态吧

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cstdio>
    #define maxn 60 
    using namespace std;
    int dp[maxn*2][maxn][maxn];
    int map[maxn][maxn];
    int n, m;
    
    int main() {
    	scanf("%d%d", &n, &m);
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= m; j++) {
    			scanf("%d", &map[i][j]);
    		}
    	}
    	for (int i = 2; i <= n + m; i++) {
    		for (int x = max(1, i - m); x <= n && x < i; x++) {
    			for (int y = max(1, i - m); y <= n && y < i; y++) {
    
    				int t = map[y][i - y];
    				t += map[x][i - x];
    
    				if (x != y || i == 2 || i == n + m ) {
    					dp[i][x][y] = max(dp[i][x][y], dp[i-1][x][y] + t);
    					dp[i][x][y] = max(dp[i][x][y], dp[i - 1][x - 1][y] + t);
    					dp[i][x][y] = max(dp[i][x][y], dp[i - 1][x][y - 1] + t);
    					dp[i][x][y] = max(dp[i][x][y], dp[i - 1][x - 1][y - 1] + t);
    				}
    			}
    		}
    	}
    	printf("%d
    ", dp[m + n][n][n]);
    	return 0;
    }
    

      

    寻找真正的热爱
  • 相关阅读:
    GRUB引导——menu.lst的写法
    条形码类型及常见条形码介绍
    Tmux:终端复用器
    find+*的问题
    find命令之exec
    Linux core 文件介绍
    C语言中返回字符串函数的四种实现方法
    C语言中的volatile
    Stars
    Game with Pearls
  • 原文地址:https://www.cnblogs.com/lesning/p/11988522.html
Copyright © 2011-2022 走看看