比赛场次 339
比赛名称 防止isaac的小练习day1
比赛状态 已结束比赛成绩
开始时间 2016-11-01 08:40:00
结束时间 2016-11-01 12:20:00
开放分组 全部用户
注释介绍
题目名称 乌龟棋
输入输出 tortoise.in/out
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分
GravatarMealy AAAAAAAAAA 0.131 s 11.09 MiB 100
GravatarLethur AAAAAAAAAA 0.170 s 11.09 MiB 100
Gravatarzhjian AAAEEEEEEE 3.530 s 0.33 MiB 30

乌龟棋

★★   输入文件:tortoise.in   输出文件:tortoise.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

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

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

1 2 3 4 5……N

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

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

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

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

【输入格式】

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

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

第2行$N$个非负整数,$a_1, a_2,\cdots, a_N$,其中$a_i$表示棋盘第$i$个格子上的分数。

第3行$M$个整数,$b_1,b_2,\cdots, b_M$,表示$M$张爬行卡片上的数字。

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

【输出格式】

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

【输入样例1】

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

【输出样例1】

73

【输入输出样例1说明】

小明使用爬行卡片顺序为1,1,3,1,2,得到的分数为6+10+14+8+18+17=73。注意,

由于起点是1,所以自动获得第1格的分数6。

【输入样例2】

13 8
4 96 10 64 55 13 94 53 5 24 89 8 30
1 1 1 1 1 2 4 1

【输出样例2】

455

【数据范围】

对于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≤a_i≤100,1≤i≤N;1≤b_i≤4,1≤i≤M$。