AcWing 312. 乌龟棋 (简单DP)打卡
题目:https://www.acwing.com/problem/content/description/314/
题意:有一段路,每个格子都有个价值,然后有m张卡牌,四种类型,走1,2,3,4步,然后输入保证正好把所有卡牌用完到达终点,求最大价值
思路:保证全部用完,只是顺序不一样得到的价值不一样,首先分别是四种类型的卡牌,对于这种要在一个点找最优的肯定是dp,我开始想的是五维状态 dp[n][a][b][c][d],代表第n个格子,然后a,b,c,d四种类型卡牌的数量, 然后代表我用a,b,c,d类型这么多张卡牌的价值最大是多少但是这样的话复杂度在 O(320*40^4),时间就超时了,实际上我们可以用使用了四种类型的卡牌数量来得到当前走到哪个位置,然后用下面四种状态分别转移然后就能得到答案
#include<bits/stdc++.h>
#define maxn 100005
#define mod 1000000007
using namespace std;
typedef long long ll;
ll dp[][][][];
ll n,m,a[];
ll e[],x;
int main(){
cin>>n>>m;
for(int i=;i<n;i++){
cin>>a[i];
}
for(int i=;i<=m;i++){
cin>>x;
e[x]++;
}
for(int A=;A<=e[];A++){
for(int B=;B<=e[];B++){
for(int C=;C<=e[];C++){
for(int D=;D<=e[];D++){
ll v=a[A+*B+*C+*D];
if(A)
dp[A][B][C][D]=max(dp[A][B][C][D],dp[A-][B][C][D]+v);
if(B)
dp[A][B][C][D]=max(dp[A][B][C][D],dp[A][B-][C][D]+v);
if(C)
dp[A][B][C][D]=max(dp[A][B][C][D],dp[A][B][C-][D]+v);
if(D)
dp[A][B][C][D]=max(dp[A][B][C][D],dp[A][B][C][D-]+v);
}
}
}
}
cout<<dp[e[]][e[]][e[]][e[]]+a[];
}
AcWing 312. 乌龟棋 (简单DP)打卡的更多相关文章
- P1541 乌龟棋(DP)
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行NNN个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第NNN格是终点,游戏要求玩家控制一个乌龟 ...
- 洛谷P1541 乌龟棋(四维DP)
To 洛谷.1541 乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游 ...
- P1541 乌龟棋 线性dp
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行NN个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第NN格是终点,游戏要求玩家控制一个乌龟棋子 ...
- codevs1068乌龟棋-四维DP,五维如何缩减一维
我们从起点x开始暴力枚举所有决策 于是可以得到如下转移 void dfs(int x,int A,int B,int C,int D,int y) { if (x==n) {ans=max(ans,y ...
- 洛谷$1541$ 乌龟棋 线性$DP$
Luogu CH Sol f[i]表示走到第i个格子时获得的最大分数 发现转移与各个爬行卡片的数量有关,一共只有4种卡片 所以就把这四种卡片的已使用张数也放进状态,f[i][a][b][c][d] ...
- CH5E01 乌龟棋【线性DP】
5E01 乌龟棋 0x5E「动态规划」练习 描述 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物.乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数).棋盘第1 格是唯一的起点,第N 格是终点 ...
- 【洛谷】P1541 乌龟棋(四维背包dp)
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
- Problem D: 乌龟棋【四维dp】
Problem D: 乌龟棋 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 24 Solved: 15[Submit][Status][Web Boa ...
- tyvj 1402 乌龟棋 dp
P1402 [NOIP2010]乌龟棋 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2010提高组复赛第二题 描述 小明过生日的时候,爸爸送给他一 ...
随机推荐
- js 文件下载进度监控
var xhr = new XMLHttpRequest(); xhr.open('GET', '文件地址.mp4'); xhr.setRequestHeader("Content-type ...
- 剑指offer第二版面试题5:从尾到头打印链表(JAVA版)
题目描述: 输入一个链表,从尾到头打印链表每个节点的值.返回新链表. import java.util.Stack; //定义链表结构 class ListNode { int value; List ...
- 题解[SCOI2009]粉刷匠 难度:省选/NOI-
Description windy有 N 条木板需要被粉刷.每条木板被分为 M 个格子.每个格子要被刷成红色或蓝色.windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色.每个格子最多 ...
- 个人珍藏的PC和安卓应用列表
个人珍藏的PC和安卓应用列表 PC应用名称 功能描述 注意事项 存储位置 维棠FLV视频下载软件 可用来下载腾讯视频的视频 将视频列表的网址粘贴到维棠软件左侧"下载"的地址中即可批 ...
- 最长连续公共子序列(LCS)与最长递增公共子序列(LIS)
最长公共子序列(不连续) 实际问题中也有比较多的应用,比如,论文查重这种,就是很实际的一个使用方面. 这个应该是最常见的一种了,不再赘述,直接按照转移方程来进行: 按最普通的方式就是,直接构造二维矩阵 ...
- [LOJ3123] CTSC2019重复
Description 给定一个⻓为 n 的字符串 s , 问有多少个⻓为 m 的字符串 t 满足: 将 t 无限重复后,可以从中截出一个⻓度为 n 且字典序比 s 小的串. m ≤ 2000 n ≤ ...
- seaborn教程3——数据集的分布可视化
原文转载:https://segmentfault.com/a/1190000015006667 Seaborn学习大纲 seaborn的学习内容主要包含以下几个部分: 风格管理 绘图风格设置 颜色风 ...
- python 谈赋值和copy区别
1变量赋值 a=1 b=a b=1 a=3 b还是等于1 2,列表赋值 嵌套列表情况 如果想让列表单独出来怎么办呢 ,这时候用到copy 如果列表嵌套列表情况 还是一样的, 如果想深度copy imp ...
- navicat连接Oracle数据库提示错误 ORA-12514
这个是服务名写错了,服务名的字段在Oracle安装路径里找 这个我的服务名,这好像是重装Oracle就会变我之前的事orcl,重装之后发现连接不上数据库了,就倔强着找到了它 备注:如果是连接远程Ora ...
- R语言中的数据分析函数
数学类函数 在求有缺失值的子集的最大值时候,需要先用na.re=TRUE去掉缺失值. 求几个特定百分位数 round(x,n) n表示保留的小数点位数 分布类函数 rnorm,密度高的数字,生成概率就 ...