标题:地宫取宝
X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。
地宫的入口在左上角,出口在右下角。
小明被带到地宫的入口,国王要求他只能向右或向下行走。
走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。
当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。
请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。

【数据格式】
输入一行3个整数,用空格分开:n m k (1<=n,m<=50, 1<=k<=12)
接下来有 n 行数据,每行有 m 个整数 Ci (0<=Ci<=12)代表这个格子上的宝物的价值
要求输出一个整数,表示正好取k个宝贝的行动方案数。该数字可能很大,输出它对 1000000007 取模的结果。
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 2000ms

暴力dfs: O(2^50) TOL

y式dp

1,定集合 dp[i,j,k,c] 表示当前坐标下拿了k件宝贝 当前所有宝贝中最大价值是c的方案数
2,找属性:count
3,划分集合:A上面来的 1,拿了当前这个 2,没拿 B左边来的 1,拿了当前这个 2,没拿
4,求解集合
分析得到一个性质,要拿i,j物品必须满足 w[i,j]>all c ,显然这是一个上升序列问题
以下只考虑i-1,j->i,j 而i,j-1->i,j也是合法路线 其性质对称 不再重复描述
拿了i,j 则c必须满足 c=w[i,j] and c>c’
此时dp[i,j,k,c]=dp[i-1,j,k-1,c’] ,c’<c
不拿则 dp[i,j,k,c]=dp[i-1,j,k,c’] ,c’=c
最终四个子集合之和就是总集合的解
4,细节处理
初始化起点 dp[1,1,1,w[1,1]]=1 dp[1,1,0,-1]=1
其中c=-1是为了比所有以后可能遇到的物品价值小,从而不影响到之后的选择
但index取不到-1 故将区间[-1,12]+1=>[0,13]
5,时间复杂度: 51511314[(0+…12)/13]=2.8*10^6

package 历届试题;import java.util.Scanner;public class Main {  //第五届A/B组 升序+动态规划static int n,m,k,res,MOD=1000000007;static int[][] w=new int[51][51];static int[][][][] dp=new int[51][51][13][14];public static void main(String[] args) {Scanner in=new Scanner(System.in);n=in.nextInt();m=in.nextInt();k=in.nextInt();for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++) {w[i][j]=in.nextInt()+1; //[0,12]->[1,13]}//initdp[1][1][1][w[1][1]]=1; //拿dp[1][1][0][0]=1; //不拿// 枚举(1,1)->(n,m)for (int i = 1; i <= n; i++) //ifor (int j = 1; j <= m; j++) { //jfor (int u = 0; u <=12; u++) { //kfor (int v = 0; v <=13; v++) { //cint ways=dp[i][j][u][v]; //合法方案数//拿if(v==w[i][j]&&u>0)for (int c = 0; c < v; c++) {  // c'<cways=(ways+dp[i-1][j][u-1][c])%MOD;ways=(ways+dp[i][j-1][u-1][c])%MOD;}//不拿ways=(ways+dp[i-1][j][u][v])%MOD;ways=(ways+dp[i][j-1][u][v])%MOD;dp[i][j][u][v]=ways; //更新方案数}}}for (int i = 0; i <= 13; i++) {res=(res+dp[n][m][k][i])%MOD;}System.out.println(res);}}
/*
TEST DATA:
INPUT:
2 2 2
1 2
2 1
OUTPUT:2INPUT:
2 3 2
1 2 3
2 1 5
OUTPUT:14INPUT:
8 7 8
8 6 3 9 4 8 6
1 7 6 9 0 1 3
4 3 9 4 8 7 5
3 1 5 6 2 2 0
3 4 2 9 2 3 4
9 4 3 1 9 4 8
5 3 9 7 9 6 6
2 7 8 8 1 7 9
OUTPUT:5
*/

第五届A/B组 地宫取宝 JAVA相关推荐

  1. 第五届蓝桥杯 java 地宫取宝

    X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.     地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过 ...

  2. 地宫取宝|2014年蓝桥杯B组题解析第九题-fishers

    地宫取宝 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

  3. 2014 蓝桥杯 预赛 c/c++ 本科B组 第九题:地宫取宝(12')

    第九题:地宫取宝(12') X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.     地宫的入口在左上角,出口在右下角.     小明被带到地宫的入口, ...

  4. 地宫取宝----第五届蓝桥杯

    /** 标题:地宫取宝X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.地宫的入口在左上角,出口在右下角.小明被带到地宫的入口,国王要求他只能向右或向下行 ...

  5. 蓝桥杯--DP2 AcWing 1212. 地宫取宝

    AcWing 1212. 地宫取宝 X 国王有一个地宫宝库,是 n×m 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只 ...

  6. 【蓝桥杯】历届试题 地宫取宝

     历届试题 地宫取宝 时间限制:1.0s   内存限制:256.0MB      问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口 ...

  7. 【蓝桥杯真题】地宫取宝(搜索-记忆化搜索详解)

    链接 [蓝桥杯][2014年第五届真题]地宫取宝 题目描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...

  8. 【蓝桥杯】历届试题 地宫取宝(记忆化搜索、dfs、dp)

    历届试题 地宫取宝 问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能 ...

  9. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

    问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

  10. 2014蓝桥杯:地宫取宝(DFS详解)

    八.题目;地宫取宝 问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能 ...

最新文章

  1. 降低数值精度以提高深度学习性能
  2. vfp全国计算机二级,全国计算机二级VFP试题
  3. 算法提高课-搜索-Flood fill算法-AcWing 1097. 池塘计数:flood fill、bfs
  4. jsp里面声明了utf-8格式,也写了字符编码过滤器,数据库编码也是utf-8,就连java.......
  5. 经典论文复现 | InfoGAN:一种无监督生成方法
  6. 在页面制作过程中需要注意事项
  7. std::tostring_枚举:如何正确使用name()和toString()方法
  8. mongodb dsl_具有Java DSL的Spring Integration MongoDB适配器
  9. C语言操作MYSQL小例子
  10. 点击百度地图获取位置详细信息(点击获取当前点击位置信息)
  11. java 定时执行任务
  12. raspberry pi 4检查ch340/ch341驱动
  13. 手机变身电脑摄像头 Droidcam使用
  14. SQL中NOW() 函数
  15. sharepoint 服务器错误: http://go.microsoft.com/fwlink?LinkID=96177
  16. 西部旅游杂志西部旅游杂志社西部旅游编辑部2022年第19期目录
  17. ubuntu 使用GParted对Ubuntu /dev/sda1进行磁盘扩容
  18. 基础数学(五)——数值积分
  19. Exploit Development – 使用SEH绕过Security Cookie
  20. BZOJ 2448: 挖油

热门文章

  1. 关于加油站GPS坐标所想到的解决办法
  2. Node学习 | Day04 数据库与身份验证(数据库的基本概念、安装并配置MySQL、MySQL的基本使用、在项目中操作MySQL、前后端的身份验证)
  3. 【干货资料 】简单的交换机光模块故障排查步骤
  4. PostgreSQL 配置优化
  5. Java模拟猜数字小游戏,有次数限制,并且输出猜测次数。
  6. 蓝牙耳机品牌排行榜,连接稳定的四款蓝牙耳机分享
  7. 使用itext把图片转成pdf文件,图片来自本地路径或者文件上传,输出pdf存在本地或者远程minio
  8. 程序员的而立之年,迷茫之年
  9. 2018年深圳,武汉房价走势分析
  10. 暴力破解Windows密码(二、三):使用getpass内存提取windows用户密码、使用quarkpwdump导出windows用户密码hash值