【每日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张牌
思路详解
#include<bits/stdc++.h>
#define ls (p<<1)
#define rs (p<<1|1)
#define mid ((l+r)>>1)
using namespace std;
typedef long long ll;
const ll N=40;
ll n,m,f[N][N][N][N],arr[1000],b[100];
int main()
{scanf("%lld %lld",&n,&m);for(int i=1;i<=n;++i)scanf("%lld",&arr[i]);ll tmp;for(int i=1;i<=m;++i)scanf("%lld",&tmp),b[tmp]++;f[0][0][0][0]=arr[1];for(int i=0;i<=b[1];++i)for(int j=0;j<=b[2];++j)for(int k=0;k<=b[3];++k)for(int l=0;l<=b[4];++l){ll p=1+i+j*2+k*3+l*4;if(i)f[i][j][k][l]=max(f[i][j][k][l],f[i-1][j][k][l]+arr[p]);if(j)f[i][j][k][l]=max(f[i][j][k][l],f[i][j-1][k][l]+arr[p]);if(k)f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k-1][l]+arr[p]);if(l)f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k][l-1]+arr[p]);}printf("%lld\n",f[b[1]][b[2]][b[3]][b[4]]);return 0;
}
有任何疑问欢迎评论哦虽然我真的很菜
点个关注再走吧
【每日DP】day6 P1541 乌龟棋(四维DP)难度⭐⭐⭐相关推荐
- P1541 乌龟棋 题解(洛谷,动态规划递推)
题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...
- 洛谷P1541 乌龟棋
原题传送门 一道比较简单易懂的线性DP题: 设状态dp[a][b][c][d]表示使用数量分别为a, b, c, d张的不同的牌 num数组存储每一个位置的分值 r = a + b * 2 + c * ...
- 牛客网 【每日一题】7月27日题目精讲—乌龟棋
来源:牛客网: 乌龟棋 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 文章目录 乌龟棋 题目描述 ...
- 洛谷 P1004 方格取数 【多线程DP/四维DP/】
题目描述(https://www.luogu.org/problemnew/show/1004) 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0. ...
- 山东省第五届ACM省赛题——Colorful Cupcakes(四维dp)
题目描述 Beaver Bindu has N cupcakes. Each cupcake has one of three possible colors. In this problem we ...
- 【动态规划】P1004 方格取数(四维dp模板题)
与传纸条方法相同! 用f[i][j][k][l]表示第一个人走到(i,j),第二个人走到(k,l)的最优解 我们考虑两个人同时走,就相当于数字三角形. 状态转移方程为: f[i][j][k][l]=m ...
- 【NOIP2010】【P1317】乌龟棋
似乎很像搜索的DP(应该也可以用搜索写) 原题: 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N 格是终点 ...
- 【codevs1068】乌龟棋noip10年TG----第二个A掉的钻石题
题目描述 Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一 的起点,第N格是终点,游戏要求玩家控制 ...
- CODE[VS] 1068 乌龟棋
题目链接: CODE[VS]1068 乌龟棋 题目描述 Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格 ...
最新文章
- 源码级深挖AQS队列同步器
- Java中String类的常见面试题
- C语言笔记:格式化输入输出(fprintf、fscanf、sscanf...)
- Albert launcher安装与使用
- C语言:用单链表实现输入排序
- Perfect swift-server/http
- 【window】Windows10下为PHP安装redis扩展
- C++算法之 一句话推断一个整数是不是2 的整数次方
- Element is missing end tag
- 一个“编码十几年”的『老程序员』分享的四点心得
- C语言读取指定文件夹下面的所有文件
- 实时障碍更新 局部路径寻优算法 矢量地图数据 局部路径规划解集_自动驾驶近期行为预测和规划的一些文章介绍(下)...
- CY3/Cy5/cy7/FITC/PEG/DBCO/BSA/PEI标记修饰纳米金球和纳米金棒的功能化修饰(Gold Nanoparticles)
- 学通java的24堂课_学通Java的24堂课
- scite php配置 下载,SciTE 的配置记录
- python npv 计算公式_PMP知识点总结 -- 净现值(NPV)
- NR SSB Beam Sweeping
- Oracle 11g使用Net Configuration Assistant工具配置监听程序
- SAP 标准教材和自学方法 摘自qiangsheng
- python123测验5随机密码生成_基于社会工程学的弱口令密码字典生成工具