首页 > 其他分享 >P1541-DP【绿】

P1541-DP【绿】

时间:2023-12-08 20:11:58浏览次数:31  
标签:card P1541 c3 c2 c1 tans DP c4

刚开始理解错题意了,题中说“玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片”指的是不能用同一张卡片,我给理解成不能连续用同一种卡片了。后来想想其实题目中的说法歧义不大,是我粗心才导致看错的。
最终我看错的导致了题目难度更高一些,偏偏写完了更高难度的题之后还过不了..直到最后对照样例才发现不对劲,然后稍稍修正就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;
}

标签:card,P1541,c3,c2,c1,tans,DP,c4
From: https://www.cnblogs.com/gongkai/p/17888937.html

相关文章

  • 既然UDP更快,为啥这么多年一直用TCP ?
    你们好啊,我是老杨。有点基本技术常识的粉丝朋友都知道,UDP肯定是比TCP快的。很多人对TCP和UDP的了解很浅,直到自己真的经历了一些通信项目之后,你才会愿意根据实际情况埋头苦学,企图“速成”一下。要是问你为什么快,我相信大多数人,也是能从各个角度,说上几句有的没的。但是,既然如此,为什么......
  • centos安装xrdp服务,可以使用系统用户mstsc连接
    Centos6安装依赖yuminstall-yautoconfautomakelibtoolpkg-configopenssl-develpam-devellibjpeg-develfuse-develTurboJPEGlibX11-devellibXfixes-devellibXrandr-develnasmbinutilsredhat-lsb-coreCentos7安装依赖yuminstall-yfingercmakepatchgccma......
  • 构建用于复杂数据处理的高效UDP服务器和客户端
    title:构建用于复杂数据处理的高效UDP服务器和客户端banner_img:https://cdn.studyinglover.com/pic/2023/12/334c0c129076533308cbc7e03f8c55be.pngdate:2023-12-723:03:00tags:-踩坑构建用于复杂数据处理的高效UDP服务器和客户端引言在当今快速发展的网络通信世界......
  • P1725-DP【绿】
    这道题最开始我用记搜写的,然后WA了一些点,后来看了半天才发现是数组开小了,原来他给了两个数据范围,一个是60%数据的数据范围,另一个是100%数据的数据范围。我没仔细看,没看见后面那行,把60%数据当成本题数据范围了....自然WA了(不过有点好奇为什么不是RE,但是不重要,这种情况不罕见)然后,增......
  • 如何在CentOS7 安装 XRDP 远程桌面服务器
    1)图形界面安装CentOS7没有图形化操作可能对很多人来说都不太习惯,下面我们来为CentOS7安装图形化界面,本文以安装GNOME图形化为例**写在安装前:**如果你的CentOS7是最小化安装,默认都是不带XWINDOWS的配置公网Yum源mkdir/etc/yum.repos.d/backupmv/etc/yum.repo......
  • 树的中心——树形dp/换根dp启蒙
    请你在树中找到一个点,使得该点到树中其他结点的最远距离最近。这个点被称为树的中心。题解:https://www.cnblogs.com/dx123/p/17302104.html评测:https://www.acwing.com/problem/content/1075/暴力做法是以每个点为根,求出从根向下走的最远距离,这个过程需要做n遍,每一遍dfs的复杂......
  • 网络通信、UDP通信、TCP通信、BS架构模拟、URL了解
    网络编程可以让程序与网络上的其他设备中的程序进行数据交互所以,我们学习网络编程的主要目的就是为了实现网络通信网络通信网络通信基本模式常见的通信模式有如下2种形式:Client-Server(Cs)、Browser/Server(Bs)Client-Server(Cs)主要是客户端与服务端之间的联系(就是相应的App和后......
  • 树的直径——树形dp求法
    树上任意两节点之间最长的简单路径即为树的「直径」。树形DP的做法可以在存在负权边的情况下求解出树的直径。constintN=10010,M=20010;intn,a,b,c,ans;structedge{intv,w;};vector<edge>e[N];intdfs(intx,intfa){intd1=0,d2=0;for(autoed:e[x]){......
  • csp认证202109-4——之状态压缩dp加期望(记忆化搜索
    https://www.acwing.com/problem/content/description/4012/#include<bits/stdc++.h>usingnamespacestd;#definelllonglong//#defineintlonglong#defineullunsignedlonglong#definepiipair<int,int>//#definedoublelongdouble#define......
  • fpd dpd vintage 滚动率
    滚动率:selecta.loan_month,b.M1/a.Cas'C-M1',c.M2/a.CAS'C-M2',d.M3/a.CAS'C-M3'from(select*fromchenqianguang.GD)asaleftjoin(select*fromchenqianguang.GD)asbona.loan_month=b.loan_monthanda.mob+1=b.mobLE......