描述

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

乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。

乌龟棋中M张爬行卡片,分成4种不同的类型(M张卡片中不一定包含所有4种类型的卡片,见样例),每种类型的卡片上分别标有1、2、3、4四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片,控制乌龟棋子前进相应的格子数,每张卡片只能使用一次。

游戏中,乌龟棋子自动获得起点格子的分数,并且在后续的爬行中每到达一个格子,就得到该格子相应的分数。玩家最终游戏得分就是乌龟棋子从起点到终点过程中到过的所有格子的分数总和。

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

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

格式

输入格式

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

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

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

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

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

输出格式

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

样例1

样例输入1[复制]

 
9 5
6 10 14 2 8 8 18 5 17
1 3 1 2 1

样例输出1[复制]

 
73

限制

每个测试点1s

提示

小明使用爬行卡片顺序为1,1,3,1,2,得到的分数为6+10+14+8+18+17=73。注意,由于起点是1,所以自动获得第1格的分数6。

对于30%的数据有1≤N≤30,1≤M≤12。

对于50%的数据有1≤N≤120,1≤M≤50,且4种爬行卡片,每种卡片的张数不会超过20。

对于100%的数据有1≤N≤350,1≤M≤120,且4种爬行卡片,每种卡片的张数不会超过40;0≤ai≤100,1≤i≤N;1≤bi≤4,1≤i≤M。

水爆了的动态规划

 #include<iostream>
#include<algorithm>
using namespace std; #define MAXN 100000+10 int n,m;
int A[],B[]={};
int F[][][][]={}; int main()
{
cin>>n>>m;
for(int i=;i<n;i++)
cin>>A[i];
for(int i=;i<=m;i++)
{
int x;
cin>>x;
B[x]++;
}
for(int a=;a<=B[];a++)
for(int b=;b<=B[];b++)
for(int c=;c<=B[];c++)
for(int d=;d<=B[];d++)
{
if(a!=) F[a][b][c][d]=max(F[a][b][c][d],F[a-][b][c][d]);
if(b!=) F[a][b][c][d]=max(F[a][b][c][d],F[a][b-][c][d]);
if(c!=) F[a][b][c][d]=max(F[a][b][c][d],F[a][b][c-][d]);
if(d!=) F[a][b][c][d]=max(F[a][b][c][d],F[a][b][c][d-]);
F[a][b][c][d]+=A[a+b*+c*+d*];
}
cout<<F[B[]][B[]][B[]][B[]];
return ;
}

最新文章

  1. Azure Queue Storage 基本用法 -- Azure Storage 之 Queue
  2. windows中,端口查看&amp;关闭进程及Kill使用
  3. linux安装Jenkins
  4. VS2013 生成安装文件
  5. spoj 839 Optimal Marks(二进制位,最小割)
  6. TCP/IP协议原理与应用笔记19:IP分组的交付和路由选择
  7. 最近国外很拉风的,,基于.net 的一个手表
  8. Largest product in a grid
  9. OMNeT++安装教程
  10. android中全局异常捕捉
  11. CMakeList.txt(2):CMakeLists.txt编写规则
  12. 杭电ACM2007--平方和与立方和
  13. Donald Knuth
  14. Windows Server 2008 R2中无法使用360免费Wifi的解决方案
  15. Flask-在Flask中跨请求传递数据资源
  16. 几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
  17. Flex学习笔记-时间触发器
  18. Qt5设置应用程序图标
  19. Path;Paths和Files;FileVisitor
  20. php模拟post提交

热门文章

  1. GFS安装
  2. 01分数规划初探?!By cellur925
  3. Django之分页升级版
  4. 51nod 1515 明辨是非 并查集+set维护相等与不等关系
  5. idea svn操作
  6. MapReduce作业的执行流程
  7. Lodop套打
  8. Windows及Linux环境搭建Redis集群
  9. 多段图动态规划dp
  10. SpringBoot服务监控