备战蓝桥杯---动态规划(基础2)

本专题主要是介绍几个比较经典的题目:

假设我们令f[i]为前i个的最长不下降子序列,我们会发现难以转移方程很难写(因为我们不知道最后一个数)。

于是,我们令f[i]为以i结尾的最长不下降子序列,这样子我们就可以得出

f[i]=max{f[j]+1}(a[j]<=a[i]&&j<i)

f[i]=1;

复杂度为n^2;用单调队列维护可nlogn;

下面给出用递归for循环代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[100000],dp[100000];
deque<int> q;
int main(){cin>>n;for(int i=1;i<=n;i++) scanf("%d",&a[i]);dp[1]=1;for(int i=2;i<=n;i++){for(int j=1;j<i;j++){if(a[j]<=a[i]) dp[i]=max(dp[i],dp[j]+1);}}int ans=0;for(int i=1;i<=n;i++) ans=max(ans,dp[i]);cout<<ans;
} 

下面是用记忆化搜索实现:

#include<bits/stdc++.h>
using namespace std;
int n,a[100000],dp[100000];
deque<int> q;
int f(int x){if(dp[x]!=0) return dp[x];for(int i=1;i<=x-1;i++){if(a[i]<=a[x]) dp[x]=max(dp[x],f(i)+1);}return dp[x];
}
int main(){cin>>n;int ans=0;for(int i=1;i<=n;i++) scanf("%d",&a[i]);dp[1]=1;for(int i=1;i<=n;i++){ans=max(ans,f(i));}cout<<ans;} 

接题:

我们设f[i][j]表示从i,j滑下的最长路径,易得:

f[i][j]=max{f[i-1][j]+1,f[i+1][j]+1,f[i][j+1]+1,f[i][j-1]+1}(a[i-1][j]<a[i][j],a[i+1][j]<a[i][j],a[i][j-1]<a[i][j],a[i][j+1]<a[i][j])

在实现上,for循环不知道某先f[i][j],我们需要按从低到高的顺序求,比较麻烦。

于是我们用记忆化搜索。

下面是AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define int long long
int a[105][105],r,c,ans,dp[105][105];
int f(int i,int j){if(i<=0||j<=0||i>r||j>c) return 0;if(dp[i][j]!=0) return dp[i][j];if(a[i-1][j]<a[i][j]) dp[i][j]=max(dp[i][j],f(i-1,j)+1);if(a[i+1][j]<a[i][j]) dp[i][j]=max(dp[i][j],f(i+1,j)+1);if(a[i][j-1]<a[i][j]) dp[i][j]=max(dp[i][j],f(i,j-1)+1);if(a[i][j+1]<a[i][j]) dp[i][j]=max(dp[i][j],f(i,j+1)+1);if(dp[i][j]==0) return dp[i][j]=1;else return dp[i][j];
}
signed main(){cin>>r>>c;for(int i=1;i<=r;i++){for(int j=1;j<=c;j++){scanf("%d",&a[i][j]);}}for(int i=1;i<=r;i++){for(int j=1;j<=r;j++){ans=max(ans,f(i,j));}}cout<<ans;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/461817.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业内部知识库管理软件的终极指南:如何选择最适合你的工具?

知识库管理软件对于希望提高客户支持和组织效率的公司来说是一个强大的工具。在数字时代&#xff0c;拥有一个可靠的知识库系统对于快速准确地满足客户需求至关重要。在当今的技术条件下&#xff0c;知识库管理软件有很多选择&#xff0c;每个企业都应该仔细评估并选择最适合自…

秋招上岸大厂,分享一下经验

文章目录 秋招过程学习过程项目经验简历经验面试经验offer选择总结 秋招过程 今天是除夕&#xff0c;秋招已经正式结束了&#xff0c;等春节过完就到了春招的时间点了。 运气比较好&#xff0c;能在秋招的末尾进入一家大厂&#xff0c;拿到20k的sp offer。 从九月份十月份就开…

C#上位机与三菱PLC的通信05--MC协议之QnA-3E报文解析

1、MC协议回顾 MC是公开协议 &#xff0c;所有报文格式都是有标准 &#xff0c;MC协议可以在串口通信&#xff0c;也可以在以太网通信 串口&#xff1a;1C、2C、3C、4C 网口&#xff1a;4E、3E、1E A-1E是三菱PLC通信协议中最早的一种&#xff0c;它是一种基于二进制通信协…

CSS之盒子模型

盒子模型 01-选择器 结构伪类选择器 基本使用 作用&#xff1a;根据元素的结构关系查找元素。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IE…

数字孪生与智慧园区的融合:打造未来产业生态的新篇章

随着科技的飞速发展&#xff0c;数字孪生和智慧园区已经成为当今社会发展的重要趋势。数字孪生技术为物理世界的对象提供了数字化的复制体&#xff0c;而智慧园区则通过各种信息技术手段实现园区的智能化管理。二者的融合&#xff0c;将为未来产业生态的发展开辟新的篇章。 一…

【SpringBootStarter】自定义全局加解密组件

【SpringBootStarter】 目的 了解SpringBoot Starter相关概念以及开发流程实现自定义SpringBoot Starter(全局加解密)了解测试流程优化 最终引用的效果&#xff1a; <dependency><groupId>com.xbhog</groupId><artifactId>globalValidation-spring…

Python 数据分析库之polars使用详解

概要 数据分析是现代应用程序和业务决策的关键组成部分。Python 作为一门强大的编程语言,拥有丰富的数据处理库和工具,其中之一就是 Polars。Polars 是一个现代化的数据操作和分析库,它提供了高性能的数据操作功能,支持链式方法调用,并且兼容 Pandas 和 Arrow 格式。本文…

『运维备忘录』之 Vim 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

RNA二级结构基础知识+一些绘制程序及用法

整理笔记翻出来的&#xff0c;以下所有程序的测试时间都是2019年11月&#xff0c;不保证现在是否能用。基本都来自论文。 此外&#xff0c;这些程序都属于能用&#xff0c;但是对长序列&#xff08;>3000&#xff09;或者复杂序列不够友好的。 &#xff08;后来我自己写了…

巴尔加瓦算法图解:算法运用(上)

目录 树反向索引傅立叶变换 并行算法MapReduce函数 树 如果能将用户名插入到数组的正确位置就好了&#xff0c;这样就无需在插入后再排序。为此&#xff0c;有人设计了一种名为二叉查找树(binary search tree)的数据结构。 每个node的children 都不大于两个。对于其中的每个…

PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证

文章目录 Openssl操系统默认的CA证书的公钥位置Nginx Https 自签证书Nginx Https 使用CA签发证书客户端使用自签证书供服务端验证客户端使用 根证书 签发客户端证书 供服务端验证 Openssl https://www.openssl.net.cn/ openssl是一个功能丰富且自包含的开源安全工具箱。 它提…

【Linux系统学习】3.Linux用户和权限

Linux用户和权限 1.认知root用户 1.1 root用户&#xff08;超级管理员&#xff09; 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root&#xff08;超级管理员&#xff09; 而在前期&#…