uva 10755 DP
来源:互联网 发布:三菱gxworks3软件下载 编辑:程序博客网 时间:2024/06/05 10:53
三维的最大子矩阵和
思路就是首先枚举两个面 然后降到二维,然后再枚举另外两个面,降到一维,降到一维之后就是求最大连续子序列和
妈蛋啊,这题的坑在于,如果你输出格式错误的话是WA啊!!!这尼玛不是坑爹吗!
就不告诉你正确输出格式,自己看去,擦
AC代码如下:
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const long long MAX = 1LL << 60;int A, B, C;long long sum1[22][22][22], sum2[22][22], sum3[22];long long solve_1(){ long long ans = sum3[1], now = min( 0LL, sum3[1] ); for( int i = 1; i <= C; i++ ){ sum3[i] += sum3[i-1]; } for( int i = 2; i <= C; i++ ){ ans = max( ans, sum3[i] - now ); now = min( now, sum3[i] ); } return ans;}long long solve_2(){ for( int i = 1; i <= B; i++ ){ for( int j = 1; j <= C; j++ ){ sum2[i][j] += sum2[i-1][j]; } } long long ans = -MAX; for( int i = B; i >= 1; i-- ){ for( int j = i - 1; j >= 0; j-- ){ memset( sum3, 0, sizeof( sum3 ) ); for( int k = 1; k <= C; k++ ){ sum3[k] = sum2[i][k] - sum2[j][k]; } ans = max( ans, solve_1() ); } } return ans;}long long solve_3(){ long long ans = -MAX; for( int i = A; i >= 1; i-- ){ for( int j = i - 1; j >= 0; j-- ){ memset( sum2, 0, sizeof( sum2 ) ); for( int k = 1; k <= B; k++ ){ for( int l = 1; l <= C; l++ ){ sum2[k][l] = sum1[i][k][l] - sum1[j][k][l]; } } ans = max( ans, solve_2() ); } } return ans;}int main(){ int T; scanf( "%d", &T ); while( T-- ){ scanf( "%d%d%d", &A, &B, &C ); memset( sum1, 0, sizeof( sum1 ) ); for( int i = 1; i <= A; i++ ){ for( int j = 1; j <= B; j++ ){ for( int k = 1; k <= C; k++ ){ scanf( "%lld", &sum1[i][j][k] ); sum1[i][j][k] += sum1[i-1][j][k]; } } } printf( "%lld\n", solve_3() ); if( T ) printf( "\n" ); } return 0;}
0 0
- uva 10755 DP
- uva 10755(dp)
- UVA 10755 10755 - Garbage Heap(DP, s)
- UVA DP 入门专题
- uva 1424 简单DP
- uva 10192 DP
- UVA dp题目汇总
- UVa 4256 - Salesmen dp
- UVa 10271 - Chopsticks dp
- UVA 1424 - Salesmen (dp)
- uva 672 Gangsters( dp )
- UVA 10271 Chopsticks(dp)
- uva 10271 Chopsticks(dp)
- UVA 11584 DP水题
- UVA 1424 DP水题
- UVA 10534 DP+LIS
- UVA 11552 DP水题
- UVA 1456 DP水题
- 让刚体听我的-applyforce、applyimpulse、setlinearvelocity
- 2506: calc
- Android基础--浅析Android中的消息机制
- 1600: [Usaco2008 Oct]建造栅栏
- Android HttpClient使用Cookie应用分析
- uva 10755 DP
- 数字图像处理的区域生长算法
- ubuntu 13.10安装ia32-libs
- csdn上传gif图不能添加水印
- 黑马程序员:__函数参数、声明、定义等注意事项__
- Coolite
- 利用OpenCV中默认的SVM参数进行HOG行人检测,默认参数是根据Dalal的方法训练的。
- Eclipse插件终极攻略(一):基本概念介绍
- Goldbach`s Conjecture