小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。

乌龟棋的棋盘只有一行,该行有 N 个格子,每个格子上一个分数(非负整数)。

棋盘第 1 格是唯一的起点,第 N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。

乌龟棋中共有 M 张爬行卡片,分成 4 种不同的类型(M 张卡片中不一定包含所有 4 种类型的卡片),每种类型的卡片上分别标有1、2、3、4 四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。

游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片,控制乌龟棋子前进相应的格子数,每张卡片只能使用一次。

游戏中,乌龟棋子自动获得起点格子的分数,并且在后续的爬行中每到达一个格子,就得到该格子相应的分数。

玩家最终游戏得分就是乌龟棋子从起点到终点过程中到过的所有格子的分数总和。

很明显,用不同的爬行卡片使用顺序会使得最终游戏的得分不同,小明想要找到一种卡片使用顺序使得最终游戏得分最多。

现在,告诉你棋盘上每个格子的分数和所有的爬行卡片,你能告诉小明,他最多能得到多少分吗?

输入格式
输入文件的每行中两个数之间用一个空格隔开。

第 1 行 2 个正整数 N 和 M,分别表示棋盘格子数和爬行卡片数。

第 2 行 N 个非负整数,a1,a2,……,aN,其中 ai 表示棋盘第 i 个格子上的分数。

第 3 行 M 个整数,b1,b2,……,bM,表示 M 张爬行卡片上的数字。

输入数据保证到达终点时刚好用光 M 张爬行卡片。

输出格式
输出只有 1 行,包含 1 个整数,表示小明最多能得到的分数。

数据范围
1≤N≤350,
1≤M≤120,
0≤ai≤100,
1≤bi≤4,
每种爬行卡片的张数不会超过40。

输入样例:
9 5
6 10 14 2 8 8 18 5 17
1 3 1 2 1
输出样例:
73

代码如下:

#include <iostream>
using namespace std;
const int N = 42;
int f[N][N][N][N];
int b[355];
int score[355];
int main()
{int n,m;cin>>n>>m;for (int i = 0;i<n;i++) cin>>score[i];for (int i = 0;i<m;i++){int x;cin>>x;b[x]++;}f[0][0][0][0] = score[0];for (int A = 0;A<=b[1];A++)for (int B = 0;B<=b[2];B++)for (int C = 0;C<=b[3];C++)for (int D = 0;D<=b[4];D++){int s = score[A*1+B*2+C*3+D*4];int &t = f[A][B][C][D];if (A)  t = max(t,f[A-1][B][C][D]+s);if (B) t = max(t,f[A][B-1][C][D]+s);if (C) t = max(t,f[A][B][C-1][D]+s);if (D) t = max(t,f[A][B][C][D-1]+s);}cout<<f[b[1]][b[2]][b[3]][b[4]]<<endl;
}

AcWing 312. 乌龟棋相关推荐

  1. P1541 乌龟棋 题解(洛谷,动态规划递推)

    题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...

  2. 【每日DP】day6 P1541 乌龟棋(四维DP)难度⭐⭐⭐

    P1541 乌龟棋 四维DP--四种状态,所以四维DP f[i][j][k][l]f[i][j][k][l]f[i][j][k][l]:表示牌号分别为1,2,3,4,的时候用了i,j,k,l张牌 思路 ...

  3. 【NOIP2010】【P1317】乌龟棋

    似乎很像搜索的DP(应该也可以用搜索写) 原题: 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N 格是终点 ...

  4. 牛客网 【每日一题】7月27日题目精讲—乌龟棋

    来源:牛客网: 乌龟棋 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 文章目录 乌龟棋 题目描述 ...

  5. CJOJ 1087 【NOIP2010】乌龟棋 / Luogu 1541 乌龟棋(动态规划)

    CJOJ 1087 [NOIP2010]乌龟棋 / Luogu 1541 乌龟棋(动态规划) Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个 ...

  6. 【codevs1068】乌龟棋noip10年TG----第二个A掉的钻石题

    题目描述 Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一 的起点,第N格是终点,游戏要求玩家控制 ...

  7. noip2010乌龟棋解题报告

    乌龟棋解题报告 题目描述 Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一 的起点,第N格是终点, ...

  8. codevs1068 乌龟棋 题解

    题目描述 Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一 的起点,第N格是终点,游戏要求玩家控制 ...

  9. CODE[VS] 1068 乌龟棋

    题目链接: CODE[VS]1068 乌龟棋 题目描述 Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格 ...

最新文章

  1. 包邮送25本经典书籍,无任何套路!
  2. Android:屏幕旋转
  3. 云路由 vyatta 体验(四)web代理
  4. 面试关于ISO七层模型你应该知道的东西
  5. mysql批量复制表数据到另外几张表的写法
  6. Spring Cloud各组件超时
  7. php正则去除base64,使用PHP preg_match_all的正则表达式base64块
  8. Java技巧:提高J2SE性能的代码技巧
  9. C++ STL容器vector篇(四) vector容器交换, 预留空间
  10. class.forname找不到类_自媒体情感类文章素材怎么找?
  11. Groovy操纵集合秘籍
  12. 怀旧服最新开的服务器是哪个,魔兽世界怀旧服什么时候开服 魔兽世界怀旧服开服时间介绍...
  13. 阿里开源代码质量检测工具!
  14. php过滤空格和回车,php如何去掉空格换行
  15. Qt制作年会抽奖一界面
  16. Java语言分为三大平台:JavaSE、JavaEE、JavaME
  17. C# 获取硬盘序列号
  18. mybatis的resultMap与association等联合查询,多个参数无法传递
  19. PHP FastCGI RCE Vul
  20. SublimeText3和EverEdit 的一些使用感受

热门文章

  1. AJAX与SQL Server(一)
  2. Android之通过ContentResolver获取手机图片和视频的路径和生成缩略图和缩略图路径
  3. IOS之提示control may reach end of non-void function
  4. linux系统做的小游戏,2007最新 100个Linux系统上的小游戏汇集
  5. java list 初始化_Java新特性:数据类型可以扔掉了?
  6. 从网恋到失恋只需要一秒...
  7. 叫板BBC!80后湖南姑娘,花3年首次拍出水下的中国,惊艳了全世界
  8. 看着女朋友的肚子,以肉眼可见的速度大起来......
  9. 传说中理科生看到会沉默、文科生看到会流泪的【程序员文史综合题目】
  10. 超级智能玩具《小小机器人》首发|全新50种玩法,创造力之源