Labyrinth

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 614    Accepted Submission(s): 275

Problem Description
度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向右走以前没有走过的格子,每一个格子中都有一些金币(或正或负,有可能遇到强盗拦路抢劫,度度熊身上金币可以为负,需要给强盗写欠条),度度熊刚开始时身上金币数为0,问度度熊走出迷宫时候身上最多有多少金币?
Input
输入的第一行是一个整数T(T < 200),表示共有T组数据。
每组数据的第一行输入两个正整数m,n(m<=100,n<=100)。接下来的m行,每行n个整数,分别代表相应格子中能得到金币的数量,每个整数都大于等于-100且小于等于100。
Output
对于每组数据,首先需要输出单独一行”Case #?:”,其中问号处应填入当前的数据组数,组数从1开始计算。
每组测试数据输出一行,输出一个整数,代表根据最优的打法,你走到右上角时可以获得的最大金币数目。
Sample Input
2 3 4 1 -1 1 0 2 -2 4 2 3 5 1 -90 2 2 1 1 1 1
Sample Output
Case #1: 18 Case #2: 4
Source
2014年百度之星程序设计大赛 - 资格赛
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<list>
#include<queue>
#include<vector>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=110;
int map[maxn][maxn];
int dp[maxn][maxn];
int main()
{int t,i,j,test=1,n,m,k,temp;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=1;i<=n;++i){for(j=1;j<=m;++j){scanf("%d",&map[i][j]);dp[i][j]=-inf;}}dp[1][1]=map[1][1];for(i=2;i<=n;++i){dp[i][1]=dp[i-1][1]+map[i][1];}for(i=2;i<=m;++i){for(j=1;j<=n;++j){temp=dp[j][i-1]+map[j][i];dp[j][i]=max(temp,dp[j][i]);for(k=j-1;k>=1;--k){temp=temp-dp[k+1][i-1]+dp[k][i-1]+map[k][i];dp[j][i]=max(dp[j][i],temp);}temp=dp[j][i-1]+map[j][i];for(k=j+1;k<=n;++k){temp=temp-dp[k-1][i-1]+dp[k][i-1]+map[k][i];dp[j][i]=max(dp[j][i],temp);}}}printf("Case #%d:\n%d\n",test++,dp[1][m]);}return 0;
}

hdoj4826Labyrinth【dp】相关推荐

  1. 【DP】【期望】$P1850$换教室

    [DP][期望]\(P1850\)换教室 链接 题目描述 有 \(2n\) 节课程安排在$ n$ 个时间段上.在第 \(i\)(\(1 \leq i \leq n\))个时间段上,两节内容相同的课程同 ...

  2. Bailian2760 数字三角形【DP】

    2760:数字三角形 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可 ...

  3. NUC1131 Triangle【DP】

    Triangle 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 图1表示一个数字三角形. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ...

  4. LeetCode:完全平方数【279】【DP】

    LeetCode:完全平方数[279][DP] 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示 ...

  5. 【DP】序列 题解

    [DP]序列 题解 序列 题目 一个长度为kkk的整数序列bbb 1,bbb 2,-,bkbkbk(1≤bbb 1≤bbb 2≤-≤bkbkbk≤NNN)称为"好序列"当且仅当后一 ...

  6. poj 2411 Mondriaan#39;s Dream 【dp】

    题目:poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然后问你最多由多少种不同的方案. 分析:这是一个比較经典的题目.网上各种牛B写法一大堆. ...

  7. BestCoder冠军赛 - 1005 Game 【DP】

    [题意] 给出一个set,set中有几个数. 现在给出n个人,环成一圈搞约瑟夫... 开始时从第1号报数,每次从set中随机选出一个数s,等报数到s后,报s的人出圈,其他人继续报数. 最后只剩1人时, ...

  8. 【9.22校内测试】【可持久化并查集(主席树实现)】【DP】【点双联通分量/割点】...

    1 build 1.1 Description 从前有一个王国,里面有n 座城市,一开始两两不连通.现在国王将进行m 次命令,命令可 能有两种,一种是在u 和v 之间修建道路,另一种是询问在第u 次命 ...

  9. zzuliOJ 1894: 985的方格难题 【dp】

    1894: 985的方格难题 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 369  Solved: 75 Description 985走入了一个n ...

  10. 【DP】【单调队列】【NOI2005】瑰丽华尔兹

    340. [NOI2005] 瑰丽华尔兹 ★★★ 输入文件:adv1900.in 输出文件:adv1900.out 简单对照 时间限制:1 s 内存限制:128 MB [任务描写叙述] 你跳过华尔兹吗 ...

最新文章

  1. java saf_Java 8 Lambda表达式探险
  2. oracle bulk collect
  3. 年后准备跳槽可以看看
  4. 还在用Jenkins?看看这些替代方案,是否更适合你!
  5. 用vs2005开发比delphi快多了
  6. Eclipse 实用技巧
  7. 【机器学习】 - 关于合适用均方误差(MSE)何时用交叉熵(cross-entropy)
  8. 五、pink老师的学习笔记——CSS精灵技术(sprite)
  9. qiniudn.com域名已完全恢复
  10. bzoj 3545: [ONTAK2010]Peaks Kruskal重构树
  11. vue基础之样式绑定(class,style)
  12. kdj买卖指标公式源码_大智慧KDJ买卖指标公式(选股公式/源码)
  13. java面试之Servlet/JSP面试题
  14. 使用C语言快速统计fastq文件q20、q30、GC含量
  15. 【c语言】—求最大公约数和最小公倍数多种方法
  16. Excel使用---excel2016___一般操作(搬,侵删)
  17. CAD得到所有图层名(网页版)
  18. modelsim 居然 error loading design?
  19. Firefox OS应用程序入门
  20. 拉卡拉的十四年和第三次成人礼

热门文章

  1. 赵小楼《天道》《遥远的救世主》深度解析(66)辩证思维的讨论:人性、教义、逻辑
  2. win10商店打不开_win10商店打不开怎么办?
  3. pytthon问题 pytcharm Automatic upload failed: could not resolve file “sftp://10.xx.xx.xx 【已解决】
  4. CF755F PolandBalls and Gifts
  5. Airflow PythonOperator、BashOperator以及Xcom使用
  6. SPI FLASH测试
  7. 面试经验(妙计旅行:C++算法工程师)
  8. Pycharm this applicatation failed to start because it could not find or laod the qt plaform plugin
  9. 解决windows下无法ctrl+A全选数据快捷键的问题
  10. 字节跳动重大宣布:取消!员工炸了:直接降薪1