P1541-DP【绿】
刚开始理解错题意了,题中说“玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片”指的是不能用同一张卡片,我给理解成不能连续用同一种卡片了。后来想想其实题目中的说法歧义不大,是我粗心才导致看错的。
最终我看错的导致了题目难度更高一些,偏偏写完了更高难度的题之后还过不了..直到最后对照样例才发现不对劲,然后稍稍修正就AC了,整体而言这道题用了近两个小时,一点也不快,毕竟题都理解错了肯定多花不少时间。
这道题的收获是:DP的核心在于用尽量少的数据去完整的刻画出状态,尽量少是一个点,另一个点是绝对不应该有任何的冗余数据,即如果某个坐标能被其他坐标计算出来,那显然这个坐标就没有存在的必要了!
最后,上代码
Code
#include <iostream>
#include <cstring>
using namespace std;
int N,M,a[400],x,card[5],dp[41][41][41][41],ans;
int dfs(int c1,int c2,int c3,int c4)
{
if(c1>card[1]||c2>card[2]||c3>card[3]||c4>card[4])return -99999999;
if(dp[c1][c2][c3][c4]!=-1)return dp[c1][c2][c3][c4];
int pos=1+1*(card[1]-c1)+2*(card[2]-c2)+3*(card[3]-c3)+4*(card[4]-c4);
if(pos==1)return dp[c1][c2][c3][c4]=a[1];
int tans=0;
tans=max(tans,dfs(c1+1,c2,c3,c4));
tans=max(tans,dfs(c1,c2+1,c3,c4));
tans=max(tans,dfs(c1,c2,c3+1,c4));
tans=max(tans,dfs(c1,c2,c3,c4+1));
return dp[c1][c2][c3][c4]=a[pos]+tans;
}
signed main()
{
memset(dp,-1,sizeof(dp));
cin>>N>>M;
for(int i=1;i<=N;i++)cin>>a[i];
for(int i=1;i<=M;i++)cin>>x,card[x]++;
cout<<dfs(0,0,0,0)<<endl;
return 0;
}
P1541-DP【绿】的更多相关文章
- 洛谷 P1541 乌龟棋 —— DP
题目:https://www.luogu.org/problemnew/show/P1541 DP. 代码如下: #include<iostream> #include<cstdio ...
- 「疫期集训day4」硝烟
那真是一阵恐怖的炮击(that boomed booms),响亮的炮音(that noise),滚滚的硝烟(that smoke),熊熊的火焰在围绕着我们前进...小心前进(go and be car ...
- 【洛谷】P1541 乌龟棋(四维背包dp)
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
- 【题解】洛谷P1541 [NOIP2010TG] 乌龟棋(类似背包的DP)
题目来源:洛谷P1541 思路 类似背包的题 总之就是四种卡牌取的先后顺序不同导致的最终ans不同 所以我们用一个四维数组每一维分别表示第几种取了几张的最大分数 然后就是简单DP解决 代码 #incl ...
- dp——洛谷 P1541 乌龟棋 —— by hyl天梦
题目:(转自 https://www.luogu.com.cn/problem/P1541) 题目描述 乌龟棋的棋盘是一行NN个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第NN格是 ...
- 洛谷P1541 乌龟棋(四维DP)
To 洛谷.1541 乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游 ...
- P1541 乌龟棋 线性dp
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行NN个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第NN格是终点,游戏要求玩家控制一个乌龟棋子 ...
- Luogu P1541 乌龟棋 【线性dp】
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行 N 个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第 N 格是终点,游戏要求玩家控制一个乌龟 ...
- 【dp】P1541 乌龟棋
链接: https://www.luogu.org/problemnew/show/P1541 [思路]: 用f[a][b][c][d]表示,第一张卡用a张,第二张卡用b张..........然后就盘 ...
- 洛谷 P1541 乌龟棋 & [NOIP2010提高组](dp)
传送门 解题思路 一道裸的dp. 用dp[i][j][k][kk]表示用i个1步,j个2步,k个3步,kk个4步所获得的最大价值,然后状态转移方程就要分情况讨论了(详见代码) 然后就是一开始统计一下几 ...
随机推荐
- 拖.sql文件到cmd中运行
这个非常简单,但是网上说的又不清楚. 第一步cmd中进入数据库 其操作是 mysql -u root - p 密码: 第二步使用数据库 其操作是use 数据库名字: ...
- SSPRQ码型设计
serdes速率超过50G之后,在VSR光模块场景下SSPRQ使用较为广泛.SSPRQ用于PAM4光模块眼图压力,闭合率测试. 但是有很多serdes IP不支持此功能.出于测试需要需要新设计SSPR ...
- Vue2.0 学习 第三组 条件语句
本笔记主要参考菜鸟教程和官方文档编写.1.v-if在div或者之类的dom中使用v-if可以控制是否插入该dom,控制由v-if的true和false决定.如:<div id="app ...
- 关于Secure Hash Algorithm加密算法
一.概述 SHA(Secure Hash Algorithm)加密算法是一种广泛应用的密码散列函数,由美国国家安全局(NSA)设计,用于保障数据的安全性和完整性.SHA算法经历了多个版本的更新,目前主 ...
- 华企盾DSC控制台操作卡顿如何解决
解决方法: 修改注册表: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows 的 USERProcessHa ...
- Wifi BSSID获取
代码很简单,通过wifiManager 获取wifiinfo,从而获取bssid, public static String getWifiSSID(Context context) { String ...
- 【Python】【OpenCV】轮廓检测
Code: 1 import cv2 2 import numpy as np 3 4 img = np.zeros((200, 200), dtype=np.uint8) 5 img[50:150, ...
- Javascript Ajax总结——XMLHttpRequest对象
Ajax技术能向服务器异步请求额外的数据,会带来更好的用户体验.Ajax技术核心:XMLHttpRequest对象(简称XHR).XHR为向服务器发送请求和解析服务器响应提供了流畅的接口.1.创建XM ...
- cgroup的入门资料
近期在准备特性的设计文档,按照评审专家的建议,需要排查现有产品中算力资源比如CPU.内存的分配方案,确认现有的硬件款型是否具备充足的资源来启用本特性. 依据前辈提供的建议,检查了产品的部署脚本,发现当 ...
- Java 并发编程(六)并发容器和框架
传统 Map 的局限性 HashMap JDK 1.7 的 HashMap JDK 1.7 中 HashMap 的实现只是单纯的 "数组 + 链表 " 的组合方式,具体的组成如下: ...