今日份动态规划学习

主要只搞了一个这道题,有点摸鱼了今天晚上,也是来小看一下这道题吧
01背包+完全背包

P1941 [NOIP2014 提高组] 飞扬的小鸟

1684a85e2e754f7b99711557d8725897.png

5eb71e5d67db49f89bc5387bfd751748.png fe9df6f7b9de4fc88e7afaccfe6a0988.png

题意: 

这题是说,给我们一个游戏界面,界面的长度为n(水平距离),高度为m(竖直距离),然后有k个管子,告诉你他下沿部分长度和下沿部分长度,然后对于每单位的水平距离,都有相应的x[i]上升距离和y[i]下降距离,然后问你达到游戏地图的最右端的最小步数是多少,要是无法达到最右端,问你最多能通过几个管子

思路:

对于这题很明显是背包类问题,然后就是01背包+完全背包

首先,我们对于每单位位置都有两种操作,可以选择点击屏幕上升,也可以选择不点下降(两种状态,01背包)

我们对于每个位置的点也分为两种情况,可以选择只点一次,也可以选择,点击多次(完全背包)

那么我们就可以定义dp数组,dp[ i ] [ j ],表示到达位置i,j的最小步数为dp[ i ] [ j ]

然后我们的状态转移方程需要判断四种情况

(1)上升:dp[i][j]=min(dp[i-1][j-x[i]]+1,dp[i][j-x[i]]+1);

(2)上升到天花板:dp[i][m]=min(dp[i][m],dp[i][j]);

(3)下降:dp[i][j]=min(dp[i-1][j+y[i]],dp[i][j]);

(4)不合法的位置,一定会被拦截:dp[i][j]=dp[0][0];  

然后我们去判断最右端位置是否存在合法数值即可,如果存在则证明可以达到最右端,反之则不行,需要求出过几个管道,求管道的时候要逆序去找,先找哪一列存在合法数据,然后定位这个长度,去看这个长度里面有几个管子

#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int x[10005];
int y[10005];
int low[10005];
int high[10005];
int dp[10005][2005];
int vis[10005];

int main()
{
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	cin>>x[i]>>y[i];
	for(int i=1;i<=n;i++)
	{
		low[i]=1;
		high[i]=m;
	}
	int a,b,c;
	for(int i=1;i<=k;i++)
	{
		cin>>a>>b>>c;
		vis[a]=1;
		low[a]=b+1;
		high[a]=c-1;
	}
	memset(dp,0x3f3f3f3f,sizeof(dp));
	for(int j=1;j<=m;j++)
	dp[0][j]=0;
	
	for(int i=1;i<=n;i++)
	{
		for(int j=x[i]+1;j<=m+x[i];j++)
		{
			dp[i][j]=min(dp[i-1][j-x[i]]+1,dp[i][j-x[i]]+1);
		}
		
		for(int j=m+1;j<=m+x[i];j++)
		{
			dp[i][m]=min(dp[i][m],dp[i][j]);
		}
		
		for(int j=1;j<=m-y[i];j++)
		{
			dp[i][j]=min(dp[i-1][j+y[i]],dp[i][j]);
		}
		
		for(int j=1;j<low[i];j++)
		{
			dp[i][j]=dp[0][0];
		}
		for(int j=high[i]+1;j<=m;j++)
        {
        	dp[i][j]=dp[0][0];  
		}
	}
	int ans=0x3f3f3f3f;
	for(int j=1;j<=m;j++)
	{
		ans=min(dp[n][j],ans);
	}
	if(ans<0x3f3f3f3f)
	{
		cout<<1<<"\n";
		cout<<ans<<"\n";
	}
	else
	{
		int i,j;
		for(i=n;i>=1;i--)
		{
			for(j=1;j<=m;j++)
			{
				if(dp[i][j]<0x3f3f3f3f)
				break;
			}
			if(j<=m)
			break;
		}
		int sum=0;
		for(int j=1;j<=i;j++)
		{
			if(vis[j]==1)
			sum++;
		}
		cout<<0<<"\n";
		cout<<sum<<"\n";
	}
	return 0;
}

 

 

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

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

相关文章

E: Unable to locate package ros-kinetic-usb-cam

mkdir -p USB/src && cd USB/src catkin_init_workspace git clone https://github.com/bosch-ros-pkg/usb_cam.git cd .. catkin_make source devel/setup.bash echo "source ~/USB/devel/setup.bash" >> ~/.bashrc source ~/.bashrc 编译过程报错&…

Wireshark抓包日常运维实用过滤

0x0 Wireshark 介绍 Wireshark 是一款功能强大的网络分析工具&#xff0c;适用于网络专业人员。它提供了出色的过滤器&#xff0c;您可以轻松放大到您认为可能存在问题的位置。过滤器的主要好处是消除定位流量&#xff0c;并缩小要查找的数据类型。 0x1 根据源 IP 地址过滤主…

Golang | Leetcode Golang题解之第134题加油站

题目&#xff1a; 题解&#xff1a; func canCompleteCircuit(gas []int, cost []int) int {for i, n : 0, len(gas); i < n; {sumOfGas, sumOfCost, cnt : 0, 0, 0for cnt < n {j : (i cnt) % nsumOfGas gas[j]sumOfCost cost[j]if sumOfCost > sumOfGas {break}…

四川古力未来科技抖音小店开创电商新纪元,前景广阔值得期待!

在数字化浪潮汹涌的当下&#xff0c;电商行业正以前所未有的速度蓬勃发展。四川古力未来科技抖音小店&#xff0c;作为这一领域的佼佼者&#xff0c;凭借其独特的经营理念和创新的营销策略&#xff0c;正在开创电商行业的新纪元。本文将深入探讨四川古力未来科技抖音小店的前景…

25 - 销售分析III(高频 SQL 50 题基础版)

25 - 销售分析III -- where 是分组之前筛选数据 -- having 是分组之后筛选数据selectp.product_id,p.product_name fromSales s left join Product p on s.product_idp.product_id group byproduct_id havingmin(sale_date) >"2019-01-01" and max(sale_date)&…

京东商品采集以及应用场景||电商API接口

京东商品采集的步骤和应用场景可以归纳如下&#xff1a; 一、采集步骤 注册账号&#xff1a;首先&#xff0c;需要在京东开放平台注册一个开发者账号。创建应用&#xff1a;登录开放平台后&#xff0c;创建一个应用以获取API密钥和应用凭据。获取权限&#xff1a;根据所需的服…

Java学习【深入探索包装类和泛型】

Java学习【深入探索包装类和泛型】 &#x1f680;包装类获取包装类对象的方式使用valueOf()创建直接赋值 Integer成员方法 &#x1f680;泛型引出泛型泛型类泛型方法泛型接口泛型的继承和通配符泛型的上界 在Java的学习中&#xff0c;包装类和泛型是两个重要的概念&#xff0c;…

JVM基础知识

一、JVM的内存区域划分 一个进程在运行的时候,会向操作系统申请到内存资源,从来存放程序运行的相关数据。 JVM本质上就是一个java进程,在运行的时候也会从操作系统那搞一块内存&#xff0c;供Java代码执行使用。 JVM又把申请的一块内存根据不同的用途划分出了不同区域。 每一…

数据库——多表查询概述

与单表查询不同&#xff0c;多表查询是从多张表中查找数据。例如&#xff1a; select * from user,course; 得到一张有36条数据的表&#xff0c;这是因为12条数据的user表与3条数据的course表进行了笛卡尔积运算&#xff0c;但是在多表查询中&#xff0c;往往需要消除笛卡尔积带…

MySQL 与 PostgreSQL 在 SQL 方面的关键对比二(功能篇)

目录 1 详细示例 1.1自动增量列 1.2 字符串连接 1.3 JSON 支持 2 总结 MySQL 和 PostgreSQL 是两种流行的开源关系数据库管理系统&#xff08;RDBMS&#xff09;。尽管它们在许多方面相似&#xff0c;但在 SQL 语法和功能上存在一些显著差异。 以下SQL语句的执行如果需要开…

YoloV8改进策略:Block篇|MobileNetV4——移动生态系统的通用模型

文章目录 摘要1、引言2、相关工作3、硬件无关的帕累托效率4、通用反向瓶颈5、Mobile MQA6、MNv4模型设计6.1、精炼NAS以增强架构6.2、MNv4模型的优化 7、结果7.1、ImageNet分类 8、增强蒸馏方案9、结论10、致谢A、搜索空间细节B、基准测试方法论C、ImageNet-1k分类任务的训练设…

springboot启动报端口被占用,修改端口还是报被占用,如何处理?

第一种方式&#xff1a; 通过cmd查看是否有程序占用端口 netstat -ano| findstr 端口号 杀死进程 taskkill -f -pid 进程号 如果未看到有程序占用该端口说明不是这个原因 第二种方式&#xff1a; 打开任务管理器 查看是否进程占用对应端口&#xff0c;有就关闭进程 第三种…

视觉SLAM十四讲:从理论到实践(Chapter8:视觉里程计2)

前言 学习笔记&#xff0c;仅供学习&#xff0c;不做商用&#xff0c;如有侵权&#xff0c;联系我删除即可 一、目标 1.理解光流法跟踪特征点的原理。 2.理解直接法是如何估计相机位姿的。 3.实现多层直接法的计算。 特征点法存在缺陷&#xff1a; 二、光流(Optical Flow) …

nodeJS社区新冠人群管理与老人疫苗小程序-计算机毕业设计源码65190

目 录 摘要 1 绪论 1.1背景及意义 1.2国内外研究慨况 1.3B/S体系工作原理 1.4node.js主要功能 2 1.5论文结构与章节安排 3 2 社区新冠人群管理与老人疫苗小程序分析 4 2.1 可行性分析 4 2.2 系统流程分析 4 2.2.1数据增加流程 5 2.3.2数据修改流程 5 2.3.3数据删除流程 5…

【会议征稿,IEEE出版】第六届电子与通信,网络与计算机技术国际学术会议(ECNCT 2024,7月19-21)

第六届电子与通信&#xff0c;网络与计算机技术国际学术会议 &#xff08;ECNCT 2024&#xff09;将于 2024年7月19日-21日 在 中国广州 举办&#xff0c; 为期三天。 会议由广东工业大学自动化学院主办&#xff0c;会议将安排主旨报告&#xff0c;口头报告以及海报展示&#…

人类语言处理nlp部分笔记——二、BERT和它的家族-介绍和微调

参考自李宏毅课程-人类语言处理 二、BERT和它的家族-介绍和微调 1. What is pre-train model 这里所说的pre-train model是输入一串tokens&#xff0c;能够输出一串vectors&#xff0c;且每个vector可以表示对应的语义的模型&#xff0c;这些vectors也被称作为embeddings。以…

假设检验学习笔记

1. 假设检验的基本概念 1.1. 原假设&#xff08;零假设&#xff09; 对总体的分布所作的假设用表示&#xff0c;并称为原假设或零假设 在总体分布类型已知的情况下&#xff0c;仅仅涉及总体分布中未知参数的统计假设&#xff0c;称为参数假设 在总体分布类型未知的情况下&#…

抱抱脸上第一的开原模型Qwen2-72B;腾讯开源人像照片生成视频的模型;Facebook开源翻译模型;智谱 AI 推出的最新一代预训练模型

✨ 1: Qwen2 Qwen2 是一种多语言预训练和指令调优的语言模型&#xff0c;支持128K上下文长度并在多项基准测试中表现优异。 Qwen2&#xff08;全称“Qwen Qwen”&#xff0c;简称Qwen&#xff09;是一个先进的大语言模型家族&#xff0c;在其前身Qwen1.5的基础上进行了重大提…

安卓手机平板使用JuiceSSH无公网IP远程连接本地服务器详细流程

文章目录 前言1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 前言 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? 本文就和大家分享一下如何使用 cpolarJuiceSSH 实现手机端远程连接Linux…

多目标应用:MOHHO多目标哈里斯鹰优化算法求解无人机三维路径规划(MATLAB代码)

详细介绍 多目标应用&#xff1a;MOHHO多目标哈里斯鹰优化算法求解无人机三维路径规划&#xff08;MATLAB代码&#xff09;-CSDN博客 一次运行结果 完整MATLAB代码