当前位置: 首页 > news >正文

边界dp注意重叠边界

前言:这个题目感觉不是简单的背包问题,因为我们这个是有限制的
想到了之前写的边界的dp,本来想定义二维dp,发现没必要二维dp,一维dp就够了,dp[i] 表示填充 1 - i 需要的最少的数量,符合子问题的定义,但是我们需要处理好边界问题,不能有重复


题目地址
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;#define int long long
int t;
int n;
const int N = (int)5e3+10;
int a[N];
// dp[ i ][ r ][ 0 / 1 ]
int dp[N];signed main(){cin >> t;while(t--){cin >> n;for(int i=1;i<=n;i++) cin >> a[i];//memset(dp,0x3fffffff,sizeof dp);for(int i=0;i<=n;i++){dp[i] = 0x3fffffff;}dp[0] = 0; // 处理好重叠的问题 for(int i=1;i<=n;i++){int u = a[i];for(int j=max(0ll,i-u);j<i;j++){if(dp[j]+1<dp[j+u]){dp[j+u] = dp[j]+1;}}} if(dp[n]!=0x3fffffff)cout << dp[n] << endl;else cout << -1 << endl;}return 0;
}

按照题解,这个确实是可以弄成一个背包问题

t = int(input())from math import inf
def solve():n = int(input())arr = list(map(int, input().split()))dp = [inf] * (n + 1)dp[0] = 0for (i, v) in enumerate(arr):for j in range(n - v, -1, -1):if j <= i and j + v > i:dp[j + v] = min(dp[j + v], dp[j] + 1)if dp[-1] == inf:print (-1)else:print (dp[-1])for _ in range(t):solve()

相关文章:

  • Java使用Tesseract进行OCR图片文字识别
  • 老师是怎么分班的?用什么工具比较好?
  • 实战OpenCV之绘制图形
  • JVM 在GC 时的根对象都有那些
  • day_49
  • 代码断点调试
  • LLM 直接偏好优化(DPO)的一些研究
  • springboot框架中filter过滤器的urlPatterns的匹配源码
  • Oracle(81)如何生成AWR报告?
  • 链动 2+1 模式小程序 AI 智能名片商城源码培训邀约策略研究
  • Springsecurity 自定义AuthenticationManager
  • RocketMQ Dashboard
  • 【大数据】什么是数据中台?
  • 【HarmonyOS 4.0】基础组件
  • 海山数据库(He3DB)源码详解:He3DB-XLogWrite函数
  • 网络传输文件的问题
  • 「面试题」如何实现一个圣杯布局?
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 〔开发系列〕一次关于小程序开发的深度总结
  • css布局,左右固定中间自适应实现
  • javascript 哈希表
  • Javascript基础之Array数组API
  • JavaScript学习总结——原型
  • Java-详解HashMap
  • 缓存与缓冲
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 利用jquery编写加法运算验证码
  • 排序算法学习笔记
  • 什么软件可以剪辑音乐?
  • 什么是Javascript函数节流?
  • 实战|智能家居行业移动应用性能分析
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​zookeeper集群配置与启动
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • $.proxy和$.extend
  • (19)夹钳(用于送货)
  • (70min)字节暑假实习二面(已挂)
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)ssm高校实验室 毕业设计 800008
  • (每日一问)基础知识:堆与栈的区别
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .gitattributes 文件
  • .Net 6.0 处理跨域的方式
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET CF命令行调试器MDbg入门(一)
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容