洛谷1541(多维dp)
走格子拿分数,直接弄dp[i]是到了第i格的最大得分可以发现是假的。
于是此题设f[i][j][k][t]代表四种步伐各用了几次可以得到的最大得分,到达的点可以直接算出来,就好转移了。
const int maxn = 355;
int N, M;
int a[maxn], cnt[4];
int f[45][45][45][45], ans;
int main() {
read(N), read(M);
rep(i, 1, N) read(a[i]);
rep(i, 1, M) {
int x; read(x);
cnt[x - 1]++;
}
mset(f, -1);
f[0][0][0][0] = a[1];
rep(i, 0, cnt[0])
rep(j, 0, cnt[1])
rep(k, 0, cnt[2])
rep(t, 0, cnt[3]) {
int tmp = f[i][j][k][t], arr = i * 1 + j * 2 + k * 3 + t * 4 + 1;
if (tmp < 0 || arr > N) continue;
if (arr == N) {
ans = max(ans, tmp);
continue;
}
if (i + 1 <= cnt[0] && arr + 1 <= N) f[i + 1][j][k][t] = max(f[i + 1][j][k][t], tmp + a[arr + 1]);
if (j + 1 <= cnt[1] && arr + 2 <= N) f[i][j + 1][k][t] = max(f[i][j + 1][k][t], tmp + a[arr + 2]);
if (k + 1 <= cnt[2] && arr + 3 <= N) f[i][j][k + 1][t] = max(f[i][j][k + 1][t], tmp + a[arr + 3]);
if (t + 1 <= cnt[3] && arr + 4 <= N) f[i][j][k][t + 1] = max(f[i][j][k][t + 1], tmp + a[arr + 4]);
}
writeln(ans);
return 0;
}
洛谷1541(多维dp)的更多相关文章
- 洛谷1387 二维dp 不是特别简略的题解 智商题
洛谷1387 dp题目,刚开始写的时候使用了前缀和加搜索,复杂度大概在O(n ^ 3)级别,感觉这么写还是比较对得起普及/提高-的难度的..后来看了题解区各位大神的题解,开始一脸mb,之后备受启发. ...
- 传纸条 NOIP2008 洛谷1006 二维dp
二维dp 扯淡 一道比较基本的入门难度的二维dp,类似于那道方格取数,不过走过一次的点下次不能再走(看提交记录里面好像走过一次的加一次a[i][j]的也AC了,,),我记得当年那道方格取数死活听不懂, ...
- 洛谷 1541 乌龟棋——dp
题目:https://www.luogu.org/problemnew/show/P1541 以用了几张牌为阶段.注意知道了用了4种牌各几张后,当前位置就是确定的,所以不用记录什么的. #includ ...
- NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp
原文链接https://www.cnblogs.com/zhouzhendong/p/9261079.html 题目传送门 - 洛谷P3959 题目传送门 - Vijos P2032 题意 给定一个 ...
- 洛谷P1140 相似基因 (DP)
洛谷P1140 相似基因 题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了44种核苷酸,简记作A,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. ...
- 洛谷 P4124 (数位 DP)
### 洛谷 P4124 题目链接 ### 题目大意: 给你一段区间,让你求满足下列两个条件时的数的个数. 1.至少有 3 个相邻相同数字 (即 111 .1111 .222 等) 2.不能同时出现 ...
- 洛谷 P2602(数位DP)
### 洛谷 P2602 题目链接 ### 题目大意:给你一个区间,问你区间所有数字中,0.1.2 .... 9 的个数的总和分别为多少. 分析: 枚举 0 ~ 9 进行数位 DP 即可. 注意记忆化 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷P1244 青蛙过河 DP/思路
又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...
- 洛谷P3928 Sequence2(dp,线段树)
题目链接: 洛谷 题目大意在描述底下有.此处不赘述. 明显是个类似于LIS的dp. 令 $dp[i][j]$ 表示: $j=1$ 时表示已经处理了 $i$ 个数,上一个选的数来自序列 $A[0]$ 的 ...
随机推荐
- java之类和对象
类的成员: 成员变量和成员函数. 成员函数:构造函数和普通函数. 构造函数: 作用:自动对对象进行初始化 特点:1.方法名和类名一致 2.没有返回值 问: 1.我们能够定义几次构造函数? 我们可以定义 ...
- oracle系统函数(日期函数)
oracle系统函数(日期函数) 调用日期函数时,首先要明确两个概念,时间戳和日期是不同的,日期中包括年月日但不包括小时分钟秒,时间戳包括年月日小时分钟秒.在oracle中,一般情况下,函数中包含da ...
- oracle -sqlplus 调用存储过程
sp.batsqlplus user/passwd/sid @.\sp.sql >sp.sqlexit; sp.sqlexex xxxx()quit;
- this、new、call和apply的相关问题
讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解 ...
- c++ 与 lua 简单交互参数介绍
原文http://blog.csdn.net/johnice/article/details/5517431 一.第一个例子 Hello World ! #include <stdio.h> ...
- 关联映射、关联查询【重点掌握一条SQL语句的那种方法】
1 什么叫关联映射 通过数据库对象之间的关联关系(一对一.一对多.多对多),反映到实体对象上之间的引用. 举例 用户实体类(User):user_id user_name user_token 笔记本 ...
- 如何使用EditPlus将json格式字符串默认为UTF-8格式
1.首先用EditPlus打开json格式的文件 2.选择Tools工具栏下的Configure User Tools 3.点击左侧File 4.在右侧Default encoding中选择UTF- ...
- 数据库commit问题
对数据库进行修改后,需要commit!---之前也是忘记commit导致数据库反应不过来.
- JavaWeb_内省(Instrospector)
内省是什么? 开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都是用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作Java对象的属性. 什么是Java对象的 ...
- 《Head First Servlets & JSP》-6-会话管理
容器怎么知道客户是谁 Http协议是无状态连接,客户浏览器与服务器建立连接.发出请求.得到响应,然后关闭连接.即,连接只针对一个请求/响应. 对容器而言,每个请求都来自于一个新的客户. 客户需要一个唯 ...