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

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

Description

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

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

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

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

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

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

Input

每行中两个数之间用一个空格隔开。
第1行2个正整数N和M,分别表示棋盘格子数和爬行卡片数。
第2行_N个非负整数,a1, a2,……, aN,其中ai表示棋盘第i个格子上的分数。
第3行M个整数,b1,b2,……, bM,表示M张爬行卡片上的数字。
输入数据保证到达终点时刚好用光M张爬行卡片,即N−1=ΣM (ΣM表示M张卡片数字的和)

Output

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

Sample Input

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

Sample Output

73

Http

CJOJ:http://oj.changjun.com.cn/problem/detail/pid/1087
Luogu:https://www.luogu.org/problem/show?pid=1541

Source

动态规划

解决思路

我们首先想到的是令F[x][a][b][c][d]表示走到x格时用了a格爬1格,b个爬2格,c个爬3格,d个爬4个的卡片所能有的最大得分。那么我们就能得到一个初始的动态转移方程

\[F[x][a][b][c][d]=max \begin{cases} F[x-1][a-1][b][c][d]& \text{a!=0}\\F[x-2][a][b-1][c][d]& \text{b!=0} \\ F[x-3][a][b][c-1][d]& \text{c!=0} \\ F[x-4][a][b][c][d-1]& \text{d!=0}\end{cases} +Value[x]\]

但是这样是通不过空间限制的。题中已经给出了用这M张卡片一定能到达n格,所以我们可以省掉x那一维数组,直接用a,b,c,d推出x,所以动态转移方程为

\[F[a][b][c][d]=max \begin{cases} F[a-1][b][c][d]& \text{a!=0}\\F[a][b-1][c][d]& \text{b!=0} \\ F[a][b][c-1][d]& \text{c!=0} \\ F[a][b][c][d-1]& \text{d!=0}\end{cases} +Value[a+b*2+c*3+d*4+1]\]

注意最后要+1,因为起始格是第一格。

为了简便,我们还是使用记忆化的方法。

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;const int maxN=351;
const int maxC=41;
const int inf=2147483647;int n,m;
int Card[10]={0};
int Value[maxN];
int F[maxC][maxC][maxC][maxC];int dfs(int a,int b,int c,int d);int main()
{int x;cin>>n>>m;for (int i=1;i<=n;i++)cin>>Value[i];for (int i=1;i<=m;i++){cin>>x;Card[x]++;//直接累加到同类卡片的计数器中}memset(F,-1,sizeof(F));F[0][0][0][0]=Value[1];F[Card[1]][Card[2]][Card[3]][Card[4]]=dfs(Card[1],Card[2],Card[3],Card[4]);cout<<F[Card[1]][Card[2]][Card[3]][Card[4]]<<endl;return 0;
}int dfs(int a,int b,int c,int d)//记忆化搜索
{if (F[a][b][c][d]!=-1)return F[a][b][c][d];int k=a+b*2+c*3+d*4+1;if (a!=0)F[a][b][c][d]=max(F[a][b][c][d],dfs(a-1,b,c,d));if (b!=0)F[a][b][c][d]=max(F[a][b][c][d],dfs(a,b-1,c,d));if (c!=0)F[a][b][c][d]=max(F[a][b][c][d],dfs(a,b,c-1,d));if (d!=0)F[a][b][c][d]=max(F[a][b][c][d],dfs(a,b,c,d-1));F[a][b][c][d]+=Value[k];return F[a][b][c][d];
}

转载于:https://www.cnblogs.com/SYCstudio/p/7138161.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql多表添加怎么写_mysql多表连接的几种写法

在数据库进行多张表的查询&#xff0c;必定会用到多表关联&#xff0c;只要是多表关联&#xff0c;就会产生笛卡儿积(什么是笛卡儿积&#xff1a;最简单的解释&#xff0c;就是你要关联的每张表总记录的乘积)&#xff0c;所以一定要写关联条件。关联条件就是在所产生的笛卡儿积…

《自然》 脑机接口新突破 人脑信号转文本准确率达97%

来源&#xff1a;网易智能据国外媒体报道&#xff0c;一个由加州大学旧金山分校的研究团队打造的新型人工智能系统可根据人脑信号来生成文本&#xff0c;准确率最高可达97%。亚马逊和谷歌等科技公司打造的虚拟助手相当先进&#xff0c;语音识别能力比起几年前进步惊人&#xff…

mysql 取月份天数_mysql 之 获取指定月份天数和指定月份上月天数

1.语法DAY(LAST_DAY(CONCAT(nc_date,01)))AS cm_day_cnt, -- 当月天数DAY(LAST_DAY(DATE_SUB((CONCAT(nc_date,01)),INTERVAL 1 MONTH))) -- 上月天数2.解析我的nc_date 是 202004&#xff0c;因此要使用concat 连接01 &#xff0c;形成完整的日期LAST_DAY()函数&#xff0c;获…

tomcat各目录(文件)作用

1.bin bin目录主要是用来存放tomcat的命令&#xff0c;主要有两大类&#xff0c;一类是以.sh结尾的&#xff08;linux命令&#xff09;&#xff0c;另一类是以.bat结尾的&#xff08;windows命令&#xff09;。 重要&#xff1a; 很多环境变量的设置都在此处&#xff0c;例如可…

对外星智能的搜索得到了重大的升级

Photo: iStockphotoRadio antenna dishes of the Very Large Array radio telescope near Socorro, New Mexico.来源&#xff1a;IEEE电气电子工程师我们都曾一度怀疑宇宙中其他地方是否存在智慧生命。加州大学伯克利分校&#xff08;University of California Berkeley&#x…

jdbc c3p0 mysql_JDBC + MySQL使用c3p0连接池

public class DBUtils {private static String url null;private static String username null;private static String pwd null;private static DataSource ds_pooled;/*** 加载数据库连接的配置文件和驱动*/static{FileInputStream fis null;Properties env new Proper…

python3学习笔记(2)_list-tuple

1 # !/usr/bin/env python32 # -*- coding:utf-8 -*_3 4 #list 和 tuple5 #list 是有序集合&#xff0c;可以用索引&#xff08;下标)访问lsit中的每一个元素6 #最后一个元素的 索引是-1&#xff0c;倒数第二个是-2, 以此类推7 fruits ["apple","origin"…

打开脑科学研究的另一扇窗:脑神经化学活体原位电化学分析新技术

来源&#xff1a;brainnews脑科学是目前国际前沿科技的热点研究领域之一&#xff0c;对脑功能的研究有助于理解人类认知、情感等复杂生理过程的本质&#xff0c;以及神经系统疾病的形成和发展规律。脑神经信号的传递以及代谢过程都离不开化学物质的参与&#xff0c;因此&#x…

mysql和oracle 开源_MySQL和oracle比较

1、判断字符串为空串--Mysql&#xff1a;在MySQL中&#xff0c;空值(Null)与空字符(’’)是不相同的select is null;------------| is null |------------| 0 |------------select trim( );--------------| trim( ) |--------------| 1 |----------------所以在mysql中可以这…

人工智能下一阶段,为啥要看互联网巨头?

来源&#xff1a;财讯网回顾过去的十余年&#xff0c;人工智能的进步可谓“耀眼”。尤其是从2015年“阿法狗”横空出世之后&#xff0c;人工智能行业的发展速度一骑绝尘。归根结底&#xff0c;是人类在人工智能领域探索50余年&#xff0c;最终才在半导体技术和软件技术的帮助下…

怎样在dos窗口中启动mysql服务器_如何在dos命令中启动mysql或sql server 服务器的一些操作...

dos命令启动mysql或者sql srever 的步骤一.dos命令启动mysql1.进入dos命令窗口2.启动mysql服务器&#xff0c;net start mysql3.登录到mysql服务器中&#xff0c;mysql -hlocalhost -uroot -p123456()4.首先可以先显示所有的数据库&#xff0c;show databases;5.看到有哪些数据…

Python shutil.md

shutil shutil模块包括高级文件操作&#xff0c;例如复制和归档。 Copying Files shutil.copyfileobj(fsrc, fdst[, length])&#xff1a;将类似文件的对象fsrc的内容复制到类似文件的对象fdst。整数length&#xff08;如果给出&#xff09;是缓冲区大小。具体地&#xff0c;负…

日本科学家:可观测宇宙中,我们可能是唯一的生命

图片来源&#xff1a;Pixabay长期以来&#xff0c;人类一直渴望在宇宙中找到地外生命的痕迹&#xff0c;但一项于今年早些时候发表的研究&#xff0c;给持有此类想法的人泼了一盆冷水。基于“自然发生”学说以及其中的“RNA世界”假说&#xff0c;研究人员认为在可观测宇宙中&a…

go 接口 构造器_Go 中接口值的复制

我一直在思考 Go 语言它是如何工作的。直到最近我才发现 Go 中一切都是基于值的。当我们向函数传递参数、迭代切片、执行类型断言时我们都可以看到这一现象。在这些例子中&#xff0c;这些数据结构所存储的值的拷贝会被返回。当我刚开始学习 Go 的时候&#xff0c;我对于这种实…

2010年下半年软件评測师(下午)试题分析与解答

真题二&#xff08;14分&#xff09;&#xff1a;阅读下列说明&#xff0c;回答问题1至问题4&#xff0c;将解答填入答题纸的相应栏内。 说明&#xff1a;某软件公司在研发一个城镇居民保险系统时&#xff0c;为了加快进度&#xff0c;測试工作在系统开发初步完毕之后開始并直接…

【人工智能】人工智能革命与机遇

来源 | 北大AI公开课编辑 | Vincent、Natalie课程导师&#xff1a;雷鸣&#xff0c;天使投资人&#xff0c;百度创始七剑客之一&#xff0c;酷我音乐创始人&#xff0c;北京大学信科人工智能创新中心主任&#xff0c;2000年获得北京大学计算机硕士学位&#xff0c;2005年获得斯…

laravel log 对象_swoole运行模式加速laravel应用的详细介绍(life)

本篇文章给大家带来的内容是关于swoole运行模式加速laravel应用的详细介绍&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。我的官方群点击此处。一、SwooleSwoole号称重新定义了PHP&#xff0c;它是一个PHP扩展&#xff0c;使…

OVS+DPDK Datapath 包分类技术

本文主体内容译于[DPDK社区文档]&#xff0c;但并没有逐字翻译&#xff0c;在原文的基础上进行了一些调整&#xff0c;增加了对TSS分类器的详细阐述。 1. 概览 本文描述了OVSDPDK中的包分类器(datapath classifier -- aka dpcls)的设计与实现思路。本文的内容主要牵涉到分类器对…

前端学习笔记

文章目录 1、学习路线2、token的安全储存方案3、跨域4、相关的学习链接 前言&#xff1a;最近在学习前端补齐我的软件技能树&#xff0c;最近简单总结一下 1、学习路线 基本&#xff1a;vue3、ts(js)、 vite、eslint、css(动画、布局) 依赖包&#xff1a;vue-router、vue-i18…

mysql第五章 在线测试_PHP+MySQL来实现在线测试quiz功能

在上一篇文章中&#xff0c;我们介绍了jQuery前端PHP在线测试题效果。这篇文章将结合实例给大家介绍如何使用jQueryPHPMySQL来实现在线测试题&#xff0c;包括动态读取题目&#xff0c;答题完毕后台评分&#xff0c;并返回答题结果。查看演示下载资源&#xff1a;1332次 下载资…