首页 > 其他分享 >P2196-DP【黄】

P2196-DP【黄】

时间:2023-11-07 09:55:20浏览次数:32  
标签:30 no int P2196 dfs DP include dp

清醒了一点后我又写了一道黄色DP题,做出来了,还行,开心不少了...
中途暴露出一些问题
1、深搜过程中既然用了二维数组,那么深搜时就应该用二维循环取最优解,而不是只从最后一行中进行一维循环取最优解。
2、dfs递归的过程中应该用dfs!!!不应该像个智障一样的忘了用dfs,直接用dp数组忘了递归了。

Code

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <stack>
#include <queue>
#include <map>
#include <unordered_map>
#include <cmath>
#define int long long
using namespace std;
int a[30],m[30][30],dp[30][30],bef[30],N,M;
int dfs(int step,int no)
{
	if(dp[step][no]!=-1)return dp[step][no];
	if(step==1)return dp[step][no]=a[no];
	int DFS=0;
	for(int i=1;i<=N;i++)//from i
		for(int j=1;j<=step-1;j++)
		{
			if(i==no)continue;//可以省略这行
			if(m[i][no]==0)continue;
			if(dp[j][i]+a[no]>DFS)
				DFS=dfs(j,i)+a[no],bef[no]=i;
		}
	return dp[step][no]=DFS;
}
void befdfs(int no)
{
	if(no==-1)return;
	befdfs(bef[no]);
	if(no==M)
		cout<<no;
	else
		cout<<no<<' ';
	return;
}
signed main()
{
	cin>>N;
	for(int i=1;i<=N;i++)cin>>a[i];
	for(int i=1;i<=N-1;i++)
	{
		for(int j=i+1;j<=N;j++)
		{
			cin>>m[i][j];
			//m[j][i]=m[i][j];
		}
	}

	memset(dp,-1,sizeof(dp));
	memset(bef,-1,sizeof(bef));
	//尝试定义:最多允许访问i并以j为结尾的最优解是dp[i][j],题目未要求i和j所以答案是max{dp[i][j]};
	int ans=-1,ansj;
	for(int i=1;i<=N;i++)
		for(int j=1;j<=N;j++)
			if(dfs(i,j)>ans)
			{
				ans=dfs(i,j);
				ansj=j;
			}
	M=ansj;
	befdfs(ansj);
	cout<<endl<<ans<<endl;
	
	return 0;
}

标签:30,no,int,P2196,dfs,DP,include,dp
From: https://www.cnblogs.com/gongkai/p/17814351.html

相关文章

  • 国产MIPI转eDP方案|低成本替代LT6911方案|CS5523规格书
    ASLCS5523是MIPI DSI输入、DP/eDP输出转换芯片。MIPIDSI最多支持4个通道,每个通道的最大运行速度为1.5Gps。对于DP1.2输出,它由4个数据通道组成,支持1.62Gbps和2.7Gbps的链路速率。支持1.62Gbps和2.7Gbps的链路速率。它支持2560的最高分辨率*1440@60Hz.它只能使用单个1.8V电源,以......
  • 如何使用K8S部署wordpress
    要在Kubernetes(K8S)中部署WordPress,您需要以下步骤:配置Kubernetes集群:首先,您需要正确配置Kubernetes集群。这包括设置Kubernetes控制平面和工作节点,并确保它们能够正常通信。创建PersistentVolume和PersistentVolumeClaim:WordPress需要持久存储来保存数据,例如用户上......
  • Docker 配置 Wordpress
    1.拉取镜像dockerpullwordpress:latest2.创建存储卷dockervolumecreatewordpress_data3.创建容器dockerrun--namewordpress-chao--restart=always--linkmysql:mysql-p8011:80-d\-vwordpress_data:/var/www/htmlwordpress----外部数据库docker......
  • 区间DP入门
    石子合并别人讲过太多了,蒟蒻就不说了。Polygon这题跟石子合并类似,只是多输出了个先清除哪条边可以使得值最大。因为我们不确定先删那一条,我们就再复制一遍添到输入的结尾,就变成了$2\timesN-1$。我们思考最大值是由哪些贡献的。最大值与最大值运算。最小值乘上最小值......
  • 有趣的Java之网络多线程——UDP编程
    UDP编程通信基本介绍类DatagramSocket和DatagramPacket【数据包/数据报】实现了基于UDP协议网络程序。UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能安全送到目的地,也不确信什么时候可以抵达。DatagramPacket对象封装了UDP数据报,在数据报中包含了发......
  • 状态压缩DP
    关于状态表示形式的优化方式。使用场景:需要记录不超过二进制数位(通常22位以内)的bool信息的DP问题。常见的位操作简单操作任何二进制数位&1得到它本身。任何二进制数位^1则取反。任何二进制数位&0则赋值为0。任何二进制数位|1则赋值为1。混合操作(n>>k&1)......
  • 推荐一些socket工具,TCP、UDP调试、抓包工具
    推荐一些socket工具,TCP、UDP调试、抓包工具https://www.cnblogs.com/porter/p/7838753.html如何使用TCP|UDPSOCKET调试工具联机超高频读卡器HXU7881-6DBI/IPhttps://zhuanlan.zhihu.com/p/648752372?utm_id=0......
  • DP 专项练习
    [USACO23OPEN]PareidoliaS对于这种题,两种思路,一种是直接\(dp\),一种是考虑每个bessie产生的贡献。显然直接考虑bessie产生的贡献难以解决bbessie的情况,所以考虑\(dp\)。设\(f_{i}\)表示以\(i\)开头的字符串的总贡献,那么显然有\(ans=\sum_{i=1}^{len}f_i\),考虑如......
  • CF DP 题乱做(续更)
    CF566F$1500$容易考虑到$n^2$做法:设$dp_i$为第$i$个数选的答案,对于排好序的序列,枚举前面的数$a_j$,如果$a_j|a_i$就转移,时间复杂度易知$O(n^2+n\logn)$。由于$a$至于很小,延续刚才的思路,设$dp_i$为选值为$i$的答案。那么她可以更新她的所有倍数,枚举倍数即可。......
  • 无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 3701(unattended-upgr)持有 N: 请
    当用apt-get时遇到无法获得锁/var/lib/dpkg/lock-frontend。锁正由进程3701(unattended-upgr)持有N:请注意,直接移除锁文件不一定是合适的解决方案,且可能损坏您的系统。E:无法获取dpkg前端锁(/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?问题时sudorm/var/cache/ap......