备战蓝桥杯---动态规划(应用1)

话不多说,直接看题:

首先我们考虑暴力,用二维前缀和即可,复杂度为o(n^4).

其实,我们不妨枚举任意2行,枚举以这个为边界的最大矩阵。

我们把其中的每一列前缀和维护出来,相当于把一个矩阵压缩成了一个序列,然后问题就转化为了求一个序列的最大子段和。

下面为AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[300][300],lie[300][300],b[300],hh[300];
int ck(){int ss=-0x3f3f3f3f;memset(hh,0,sizeof(hh));for(int i=1;i<=n;i++){hh[i]=max(b[i],b[i]+hh[i-1]);ss=max(ss,hh[i]);}return ss;
}
int main(){cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];lie[i][j]=a[i][j]+lie[i-1][j];}}int ans=-0x3f3f3f3f;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){for(int k=1;k<=n;k++){b[k]=lie[j][k]-lie[i][k];}ans=max(ans,ck());}}cout<<ans;
}

扩展一下,假如是求立方体呢?

我们枚举两个x方向与y方向的线,然后在z轴上前缀和压缩即可,复杂度为o(n^5)

接题:

第一问就是求导弹的最长不上升子序列。

对于第二问当高度递增时,要打全部需要相应的个数,换句话说就是至少要导弹的最长上升子序列。

其实,这个数量刚刚可以,我们不妨用反证法,假如还需要一个,不妨假设它栏A与B(A<B)高度间的一个C,假如他比B高,那么我栏B的导弹栏C即可,假如比A高并比B低,矛盾,假如比A低则不需要。因此,数量刚刚可以。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int b,cnt,a[100010],dp1[100010],dp2[100010];
int main(){while(cin>>b){a[++cnt]=b;}for(int i=1;i<=cnt;i++){dp1[i]=1;for(int j=1;j<i;j++){if(a[j]>=a[i]){dp1[i]=max(dp1[i],1+dp1[j]);}}}int ans=1;for(int i=1;i<=cnt;i++){ans=max(ans,dp1[i]);}cout<<ans<<endl;for(int i=1;i<=cnt;i++){dp2[i]=1;for(int j=1;j<i;j++){if(a[j]<a[i]){dp2[i]=max(dp2[i],1+dp2[j]);}}}ans=1;for(int i=1;i<=cnt;i++){ans=max(ans,dp2[i]);}cout<<ans;
}

我们不妨设f[i][0]表示上升的最大长度(i必选),f[i][1]表示先上升在下降的最大长度(i必选)

于是我们得到转移方程f[i][0]=max(1+f[k][0]),f[i][1]=max(f[k][0]+1,f[k][1]+1)

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int b,cnt,a[100010],dp1[100010],dp2[100010];
int main(){while(cin>>b){a[++cnt]=b;}for(int i=1;i<=cnt;i++){dp1[i]=1;for(int j=1;j<i;j++){if(a[j]>=a[i]){dp1[i]=max(dp1[i],1+dp1[j]);}}}int ans=1;for(int i=1;i<=cnt;i++){ans=max(ans,dp1[i]);}cout<<ans<<endl;for(int i=1;i<=cnt;i++){dp2[i]=1;for(int j=1;j<i;j++){if(a[j]<a[i]){dp2[i]=max(dp2[i],1+dp2[j]);}}}ans=1;for(int i=1;i<=cnt;i++){ans=max(ans,dp2[i]);}cout<<ans;
}

接题:

我们换一次需要用一次次数得到下-上的值,容易与想到与背包问题类似。

于是我们类比定义:f[i][j]为前i个骨牌得到j的最小次数。

易得转移方程:f[i][j]=min(f[i-1][j-(上-下)],f[i-1][j+(上-下)]+1)

有俩个细节:1.对于初值我们赋值为正无穷。

2.对于负数问题,我们平移处理。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
#define ck 5001
int n,dp[2][10010];
struct node{int shang,xia;
}a[1010];
int main(){cin>>n;for(int i=1;i<=n;i++) scanf("%d%d",&a[i].shang,&a[i].xia);memset(dp,0x3f,sizeof(dp));dp[0][0+ck]=0;for(int i=1;i<=n;i++){for(int j=-5*i+ck;j<=5*i+ck;j++){int hh=a[i].shang-a[i].xia;dp[i%2][j]=min(dp[(i-1)%2][j-hh],dp[(i-1)%2][j+hh]+1);}}int mm=ck;if(dp[n%2][ck]<=n) cout<<dp[n%2][ck];else{int i=ck-1,j=ck+1;for(;i>=0;i--){if(dp[n%2][i]<=n) break;}for(;j<=10009;j++){if(dp[n%2][j]<=n) break;}if(i+j==2*ck) cout<<min(dp[n%2][i],dp[n%2][j]);else if(i+j>2*ck) cout<<dp[n%2][i];else cout<<dp[n%2][j]; }
}

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

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

相关文章

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 上面是涉及到的源代码&#xff0c;而这次需要分析的就是78、79行的两个中断。首先&#xff0c;需要确认NVIC_SYSPRI2寄存器的作用。 进一…

PostgreSQL使用session_exec和file_fdw实现失败次数锁定用户策略

使用session_exec 、file_fdw以及自定义函数实现该功能。 缺陷&#xff1a;实测发现锁用户后&#xff0c;进去解锁特定用户。只能允许一次登陆&#xff0c;应该再次登陆的时候&#xff0c;触发函数&#xff0c;把之前的日志里的错误登陆的信息也计算到登录次数里了。而且foreig…

macOS上使用VScode编译配置C++语言开发环境

本文介绍macOS上使用VScode编译配置C语言开发环境 1.准备工作 安装C/C插件 2.配置c_cpp_properties.json文件 [⇧⌘P]打开命令模式&#xff0c;选择[C/Cpp: Edit Configurations(JSON)]命令&#xff0c;回车后会自动生成一个.vscode目录&#xff0c;目录下有一个c_cpp_prope…

数学在现代经济学研究中的作用

数学在现代经济学研究中的作用 The Role of Mathematics in Modern Economic Research 经济学&#xff0c;作为一门研究人类如何在资源有限的情况下做出选择的社会科学&#xff0c;历来都与数学有着紧密的联系。随着科技的发展&#xff0c;特别是在信息时代数据量的爆炸性增长&…

【漏洞复现】H3C 路由器多系列信息泄露漏洞

Nx01 产品简介 H3C路由器是一款高性能的路由器产品&#xff0c;具有稳定的性能和丰富的功能。它采用了先进的路由技术和安全机制&#xff0c;可以满足不同用户的需求&#xff0c;广泛应用于企业、运营商和数据中心等领域。 Nx02 漏洞描述 H3C路由器多系列存在信息泄露漏洞&…

林浩然与杨凌芸的Java奇遇记:Map世界的恋爱攻略

林浩然与杨凌芸的Java奇遇记&#xff1a;Map世界的恋爱攻略 The Java Adventure of Lin Haoran and Yang Lingyun: Love Strategy in the Map World 在一个充满代码香气的世界里&#xff0c;男主角林浩然&#xff0c;一个热衷于Java编程的程序员大侠&#xff0c;以其深厚的内功…

K8s进阶之路-核心概念/架构:

架构&#xff1a;Master/Node Master组件--主控节点{ 负责集群管理&#xff08;接收用户事件转化成任务分散到node节点上&#xff09;} Apiserver&#xff1a; 资源操作的唯一入口&#xff0c;提供认证、授权、API注册和发现等机制 Scheduler &#xff1a; 负责集群资源调度&am…

【CentOS】Linux 文件与目录管理

目录 1、目录的切换、新增和删除 &#xff08;1&#xff09;cd (change directory&#xff0c;切换目录) &#xff08;2&#xff09;pwd (显示目前所在的目录) &#xff08;3&#xff09;mkdir (make directory&#xff0c;建立新目录 ) &#xff08;4&#xff09;rmdir (…

基于SSM的疫情期间学生信息管理平台的设计与实现(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的疫情期间学生信息管理平台的设计与实现&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

CSS 实现 3D 书本展开动效

一、前言 本文将使用纯 CSS 实现一个简单的 3D 书本展开动效。 二、实现思路 实现这么一个书本动效 乍一看可能会感觉有些复杂&#xff0c;实际上并不难&#xff0c;遇到这种组合动效的需求时&#xff0c;我们只要将整体拆分成多个小步骤去做&#xff0c;就很简单了。 1. 拆…

RabbitMQ的安装与使用

RabbitMQ的安装与使用 介绍一、RabbitMQ的安装1 查找镜像2 拉取镜像3 查看镜像4 创建容器5 查看容器6 访问测试 二、RabbitMQ的使用1 创建项目2 配置文件3 队列配置文件4 消费者5 生产者6 测试 三、交换器四、普通队列Demo五、死信队列Demo1 介绍2 示例2.1 配置2.2 生产者2.3 消…

10_Java泛型

一、为什么要有泛型 1.泛型的设计背景 集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象&#xff0c;所以在JDK1.5之前只能把元素类型设计为Object&#xff0c;JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定&#xff0c;其他的部分…

Qt C++春晚刘谦魔术约瑟夫环问题的模拟程序

什么是约瑟夫环问题&#xff1f; 约瑟夫问题是个有名的问题&#xff1a;N个人围成一圈&#xff0c;从第一个开始报数&#xff0c;第M个将被杀掉&#xff0c;最后剩下一个&#xff0c;其余人都将被杀掉。例如N6&#xff0c;M5&#xff0c;被杀掉的顺序是&#xff1a;5&#xff…

14. UE5 RPG使用曲线表格设置回复血量值

之前的文章中&#xff0c;我使用的都是固定的数值来设置血量回复或者蓝量回复&#xff0c;在这篇文章里面&#xff0c;介绍一下使用曲线表格。通过曲线表格我们可以设置多个数值&#xff0c;然后通过去通过修改索引对应的数值去修改回复的血量或者蓝量。 创建曲线表格 首先创…

林浩然与杨凌芸的Java奇遇记:字节流世界的二进制爱情

林浩然与杨凌芸的Java奇遇记&#xff1a;字节流世界的二进制爱情 The Java Adventure of Lin Haoran and Yang Lingyun: Binary Love in the Byte Stream World 在编程宇宙中&#xff0c;有一对程序员CP——林浩然和杨凌芸&#xff0c;他们共同编织着Java王国里那些神秘而又充满…

MySQL--SQL解析顺序

前言&#xff1a; 一直是想知道一条SQL语句是怎么被执行的&#xff0c;它执行的顺序是怎样的&#xff0c;然后查看总结各方资料&#xff0c;就有了下面这一篇博文了。 本文将从MySQL总体架构—>查询执行流程—>语句执行顺序来探讨一下其中的知识。 一、MySQL架构总览&a…

Swift Combine 使用从 PassthroughSubject 预定好的发送的事件测试订阅者 从入门到精通二十三

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

MSS与cwnd的关系,rwnd又是什么?

慢启动算法是指数递增的 这种指数增长的方式是慢启动算法的一个核心特点&#xff0c;它确保了TCP连接在开始传输数据时能够快速地探测网络的带宽容量&#xff0c;而又不至于过于激进导致网络拥塞。具体来说&#xff1a; 初始阶段&#xff1a;当TCP连接刚建立时&#xff0c;拥…

ubuntu屏幕小的解决办法

1. 安装vmware tools , 再点自适应客户机 执行里面的vmware-install.pl这个文件 &#xff1a;sudo ./vmware-install.pl 执行不了可以放到家目录&#xff0c;我放在了/home/book 里面 最后点这个自适应客户机 然后我这里点不了是因为我点了控制台视图和拉伸客户机&#xff0c…

【Java中23种设计模式-单例模式2--懒汉式2线程安全】

加油&#xff0c;新时代打工人&#xff01; 简单粗暴&#xff0c;学习Java设计模式。 23种设计模式定义介绍 Java中23种设计模式-单例模式 Java中23种设计模式-单例模式2–懒汉式线程不安全 package mode;/*** author wenhao* date 2024/02/19 09:38* description 单例模式…