备战蓝桥杯---动态规划(应用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]; 
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[BUUCTF]-PWN:axb_2019_heap解析(格式化字符串漏洞,unlink,off by one)

查看保护 查看ida 大致就是alloc创建堆块&#xff0c;free释放堆块&#xff0c;以及fill填充堆块 解释get input函数&#xff1a; 这里解释一下get input函数 这个函数是人工编写的&#xff0c;其中*v410那里是把接受到的换行符变为\x00&#xff0c;并且结束输入。 v3那里&a…

中科大计网学习记录笔记(十三):UDP 套接字编程 | 传输层概述和传输层的服务

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…

知识产权-

知识产权 《中华人民共和国著作权法》 《中华人民共和国著作权法》是为了保护文学、艺术和科学作品作者的著作权及与著作权有关的权益。《中华人民共和国著作权法》中涉及到的作品的概念是文学、艺术和自然科学、社会科学、工程技术等作品,具体来说,这些作品包括以下九类: …

不买服务器也可以将本地服务放到互联网(ngrok内网穿透)

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 不买服务器也可以将本地服务放到互联网 前言ngrok基础&#xff1a;穿越网络边界的魔法使用场景&#xff1a;突破网络限制的利器实战 前言 在网络的世界里&#xff0c;有时候你的服务像是困在一座数字…

前端工程化之:webpack4-1(babel的安装和使用)

一、安装 官网&#xff1a;https://babeljs.io/ 民间中文网&#xff1a;https://www.babeljs.cn/ 1.babel简介 babel一词来自于希伯来语&#xff0c;直译为巴别塔。 巴别塔象征的统一的国度、统一的语言 而今天的 JS 世界缺少一座巴别塔&#xff0c;不同版本的浏览器能识别…

为什么要使用纯净住宅代理?

随着互联网的快速发展&#xff0c;代理服务器已经成为许多在线活动的关键组成部分&#xff0c;从数据挖掘到网络安全。然而&#xff0c;随着技术的不断发展&#xff0c;住宅IP代理正崭露头角&#xff0c;因其在保障隐私、提升性能和应对封锁方面的卓越优势而备受瞩目。本文将深…

聚观早报 | 比亚迪秦PLUS荣耀版上市;任天堂成日本最富有公司

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 2月20日消息 比亚迪秦PLUS荣耀版上市 任天堂成日本最富有公司 理想汽车2024春季发布会 真我12 Pro系列国内官宣 …

读《能力陷阱》的一些随想

一、引言 这本书是由埃米尼亚.伊贝拉所写&#xff0c;作者是哈佛大学商学院和欧洲工商管理学院组织行为学教授。《能力陷阱》是一本由埃米尼亚伊贝拉所著的畅销书籍&#xff0c;它为我们揭示了如何摆脱自我限制&#xff0c;并释放出潜在的无限能力。在阅读这本书的过程中&#…

计算机视觉的应用23-OpenAI发布的文本生成视频大模型Sora的原理解密

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用23-OpenAI发布的文本生成视频大模型Sora的原理解密。本文概况性地将Sora模型生成视频主要分为三个步骤&#xff1a;视频压缩网络、空间时间潜在补丁提取以及视频生成的Transformer模型。 文章目录…

使用倒模耳机壳UV村脂胶液制作HIFI耳机隔音降噪耳机壳推荐的材料和工艺流程?

对于使用倒模耳机壳UV树脂胶液制作HIFI耳机隔音降噪耳机壳&#xff0c;以下是一些推荐的材料和工艺流程&#xff1a; 材料&#xff1a; UV树脂胶液&#xff1a;选择适合倒模工艺的UV树脂胶液&#xff0c;要求具有高透明度、良好的流动性和固化性能。模具材料&#xff1a;根据…

Docker命令实战

文章目录 一、Docker常用命令-图谱二、基础实战命令2.1、查找镜像2.2、启动容器2.3、修改容器内容2.3.1、进入容器内部修改2.3.2、挂载数据到外部修改 2.4、提交改变2.5、镜像传输--将镜像保存成压缩包2.6、两台主机间压缩文件的传输拷贝2.7、推送阿里云个人远程镜像仓库2.8、其…

漫漫数学之旅027

文章目录 经典格言数学习题古今评注名人小传 - 约翰弥尔顿 经典格言 机会统治一切。——约翰弥尔顿&#xff08;John Milton&#xff09; 约翰弥尔顿&#xff0c;这位伟大的英国诗人曾掷地有声地说出&#xff1a;“机会统治一切。”这句话如果放在一场宇宙级的脱口秀中&#x…

(三十六)大数据实战——ClickHouse数据库的部署安装实现

前言 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库 DBMS &#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08; OLAP &#xff09;&#xff0c;能够使用SQL查询实时生成分析数据报告。列式存储&#xff1a;数据按列进行存储&a…

wordpress企业网站模板免费

绿色风格的wordpress免费模板&#xff0c;经测试可以免费下载的WP模板。 https://www.wpniu.com/themes/300.html 简洁大气的文化艺术类wordpress模板&#xff0c;可以免费下载&#xff0c;实用易上手&#xff0c;新手也适合。 https://www.wpniu.com/themes/304.html 高端大…

微信小程序-绑定数据并在后台获取它

如图 遍历列表的过程中需要绑定数据&#xff0c;点击时候需要绑定数据 这里是源代码 <block wx:for"{{productList}}" wx:key"productId"><view class"product-item" bindtap"handleProductClick" data-product-id"{{i…

maven异常记录-must be unique

maven 打包异常记录 我们可以看看一个重要的异常&#xff1a; dependencies.dependency.(groupId:artifactId:type:classifier) must be unique: org.springframework.boot:spring-boot-starter-test 经过检查pom文件 果然是spring-boot-starter-test引用重复&#xff0c;平…

Elasticsearch:什么是搜索引擎?

搜索引擎定义 搜索引擎是一种软件程序或系统&#xff0c;旨在帮助用户查找存储在互联网或特定数据库中的信息。 搜索引擎的工作原理是对各种来源的内容进行索引和编目&#xff0c;然后根据用户的搜索查询向用户提供相关结果列表。 搜索引擎对于希望快速有效地查找特定信息的用…

SpringMVC 的参数绑定之list集合、Map

标签中name属性的值就是pojo类的属性名 参数绑定4 list [对象] <form action"teaupd.do" method"post"> <c:forEach items"${list}" var"tea" varStatus "status"> 教师编号&#xff1a;<input…

基础antdesign的业务型 短时间控件封装(复制即可使用)

{/* startFieldName 开始时间标识 endFieldName 结束时间标识 label 同form lable rules 是否开启规则校验 默认开启 detailData 详情数据&#xff0c;用于编辑回显 dateRange 限制结束时间的范围 例如&#xff1a;开始时间选择了 2024-02-05 &#xff0c;加上 dateRange3 后 只…