wiki1169-传纸条(dp)
http://wikioi.com/problem/1169/
四维数组和三维数组;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<bitset>
#include<iomanip> using namespace std;
int num[ 55 ][ 55 ] ;
int dp[ 55 ][ 55 ][ 55 ][ 55 ] ; int main()
{
int n , m ;
while( scanf( "%d%d" , &n , &m ) != EOF )
{
memset( dp , 0 , sizeof( dp ) ) ;
for( int i = 1 ; i <= n ; ++i )
for( int j = 1 ; j <= m ; ++j )
scanf( "%d" , &num[ i ][ j ] ) ;
for( int i1 = 1 ; i1 <= n ; ++i1 )
for( int j1 = 1 ; j1 <= m ; ++j1 )
for( int i2 = 1 ; i2 <= n ; ++i2 )
for( int j2 = 1 ; j2 <= m ; ++j2 )
{
int temp = max( max( dp[ i1 - 1 ][ j1 ][ i2 -1 ][ j2 ] , dp[ i1 - 1][ j1 ][ i2 ][ j2 - 1] ) , max( dp[ i1 ][ j1 -1 ][ i2 -1 ][ j2 ] , dp[ i1 ][ j1 - 1 ][ i2 ][ j2 - 1 ])) ;
if( i1 == i2 && j1 == j2 )
dp[ i1 ][ j1 ][ i2 ][ j2 ] = num[ i1 ][ j1 ] + temp ;
else
dp[ i1 ][ j1 ][ i2 ][ j2 ] = num[ i1 ][ j1 ] + num[ i2 ][ j2 ] + temp ;
}
printf( "%d\n" , dp[ n ][ m ][ n ][ m ] ) ;
}
return 0 ;
}
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<bitset>
#include<iomanip> using namespace std; int m , n , mapp[ 51 ][ 51 ] , f[ 101 ][ 51 ][ 51 ] ; void dp()
{
int i , j , k , s , t , Max = 0 ;
for( i = 1 ; i <= m + n - 1 ; ++i )
{
t = ( i > m ) ? m : i ;
s = ( i > n ) ? n : i ;
for( j = i - s + 1 ; j <= t ; ++j )
{
for( k = i - s + 1 ; k <= t ; ++k )
if( j != k || i == m + n - 1 )
{
Max = 0 ;
if( Max < f[ i - 1 ][ j ][ k ] )
Max = f[ i - 1 ][ j ][ k ] ;
if( Max < f[ i - 1 ][ j - 1 ][ k ] )
Max = f[ i - 1 ][ j - 1 ][ k ] ;
if( Max < f[ i - 1 ][ j - 1 ][ k - 1 ] )
Max = f[ i - 1 ][ j - 1 ][ k - 1 ] ;
if( Max < f[ i - 1 ][ j ][ k - 1 ] )
Max = f[ i - 1 ][ j ][ k - 1] ;
f[ i ][ j ][ k ] = Max + mapp[ j ][ i - j + 1 ] + mapp[ k ][ i - k + 1 ] ;
}
} }
}
int main()
{
while( cin >> m >> n )
{
int i , j ;
for( i = 1 ; i <= m ; ++i )
for( j = 1 ; j <= n ; ++j )
cin >> mapp[ i ][ j ] ;
dp() ;
cout << f[ m + n - 1 ][ m ][ m ] << endl ;
}
return 0 ;
}
wiki1169-传纸条(dp)的更多相关文章
- NOIP2008传纸条[DP]
题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...
- CodeVS1169 传纸条 [DP补完计划]
题目传送门 题目描述 Description 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端, ...
- P1011 传纸条//dp优化改进状态表示
P1011 传纸条 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2008复赛提高组第三题 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不 ...
- P1006 传纸条 /// DP+滚动数组
题目大意: https://www.luogu.org/problemnew/show/P1006 题解 不难想到 求从起点到终点的两条不同的路 因为只能向右或向下走 所以纸条1和2不可能同时位于同一 ...
- tyvj1011 - 传纸条 ——DP
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1011 状态转移方程: f[k,x1,x2] = max(f[k-1,x1,x2],f[k-1,x1-1, ...
- TYVJ 1011 NOIP 2008&&NOIP 2000 传纸条&&方格取数 Label:多线程dp
做题记录:2016-08-15 15:47:07 背景 NOIP2008复赛提高组第三题 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...
- 传纸条(一)(双线程dp)
传纸条(一) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...
- nyoj61 传纸条(一) dp
思路:两人一个从左上角出发只能向右和向下,另一人从右下角出发只能向左和向上,可以看做两人都是从右下角出发,且只能向左和向上传纸条,并且两条路径不会相交,因为一个人只会传一次,那么随便画一个图就能知道两 ...
- P1006 传纸条 (方格取数dp)
题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个mm行nn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运 ...
- 传纸条---(dp)
题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个mmm行nnn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了. ...
随机推荐
- Python cookbook - 读书笔记
Before: python built-in function: docs 我只想学function map(), THIS - 摘: map(foo, seq) is equivalent to ...
- CMake实践(1)
简介: 目录结构t1/main.cpp; t1/CMakeLists.txt 说明: main.cpp: #include <stdio.h> int main(){ printf( ...
- UVALive 4255 Guess
这题竟然是图论···orz 题意:给出一个整数序列a1,a2,--,可以得到如下矩阵 1 2 3 4 1 - + 0 + 2 + + + 3 - - 4 + &quo ...
- C++重要知识点小结---1
1.C++中类与结构的唯一区别是:类(class)定义中默认情况下的成员是private的,而结构(struct)定义中默认情况下的成员是public的. 2. ::叫作用域区分符,指明一个函数属于哪 ...
- JDBC连接工厂类
看到有些书上数据库连接提供两个工厂类,一个连接工厂类一个关闭工厂类,并且关闭工厂类写了多种重载形式,感觉没有必要,这样写比较简洁一些. /** * 抽象出的连接工厂类,提供连接数据库和关闭连接的 ...
- sizeof和strlen小结
sizeof和strlen小结 写在前面 之所以要总结一下sizeof和strlen的用法和区别,是因为这些知识可以帮助我们更加深入的理解各种数据结构在内存中的占用情况,也许表面上看好像没有多大用处, ...
- Unity中Instantiate一个prefab时需要注意的问题
在调用Instantiate()方法使用prefab创建对象时,接收Instantiate()方法返回值的变量类型必须和声明prefab变量的类型一致,否则接收变量的值会为null. 比如说,我在 ...
- CATALOGUE 目录
1 语言基础 1.1 c/c++ [转]C/C++ 存储类型 作用域 连接类型 [转]C/C++内存划分 [转]C/C++除法实现方式及负数取模详解 [转]为什么C++编译器不能支持对模板的分离式编译 ...
- 2016 Multi-University Training Contest 5 1012 World is Exploding 树状数组+离线化
http://acm.hdu.edu.cn/showproblem.php?pid=5792 1012 World is Exploding 题意:选四个数,满足a<b and A[a]< ...
- CreateThread函数&&CString::GetBuffer函数
对这个两个常见的windows下的函数学习了一下: //最简单的创建多线程实例 #include <stdio.h> #include <windows.h> //子线程函数 ...