首页 > 其他分享 >完全背包问题 —— 贪心优化 DP 范围

完全背包问题 —— 贪心优化 DP 范围

时间:2022-10-27 21:25:20浏览次数:58  
标签:dots 背包 值域 缩小 物品 时刻 DP 贪心

题意: 现在有 \(2n+1\) 个物品(\(n\le 300\)),体积分别为 \(-n,-n+1,\dots,-1,0,1,\dots,n\),第 \(i\) 个物品有 \(a_i\) 个,求选出恰好 \(S\) 的总体积最多能选几个物品。

第一步:缩小值域。

不妨设 \(\sum a_i>=S\),否则将所有数取反。

这时先选完所有的负数,然后不断选正数直至和恰好不超过 S,则此时的和应该属于 \([S-n,S]\),值域范围被缩小了。

第二步:缩小状态

容易证明,从当前状态直至目标状态,必然存在一个操作序列,使得在任意时刻当前的和属于 \([S-n,S+n]\)。

第三步:缩小物品数

又可以发现,如果存在两个时刻当前时刻的和相同,则这两个时刻之中的操作都是无用的,并且可以证明这一番无用操作一定会减小你所选出的物品数。于是你最多进行 \(2n+1\) 次改变。

每次改变至多变化 \(O(n)\),因此 dp 值域 \(O(n^2)\),时间复杂度即为 \(O(n^3)\)。

标签:dots,背包,值域,缩小,物品,时刻,DP,贪心
From: https://www.cnblogs.com/Charlie-Vinnie/p/16833754.html

相关文章

  • ac 5 多种背包问题
    输入是45123241343452实际上把他边成45121241241341681451451全部是一就变成01背包问题了#include<bits/stdc++.h>usingname......
  • ac 3完全背包问题
    #include<bits/stdc++.h>usingnamespacestd;constintN=1010;intn,m;intv[N],w[N];intf[N];intmain(){cin>>n>>m;for(inti=1;i<=......
  • ACWing 3549 -- dp&&滚动数组
    题目描述最长非递减子序列思路Reference代码......
  • eXosip 底层库UDP心跳包发送问题分析
    场景   调用eXosip库跟国标下级进行交互的时候,抓包发现,INVITE请求,前面是添加了jaK.字符串,导致对方解析异常,目前暂时不清楚对方是如何解析的。通过追踪源码,发现是底层做......
  • *PAT_甲级_1033 To Fill or Not to Fill (25分) (C++)【贪心算法】
    目录​​1,题目描述​​​​题目大意​​​​输入​​​​输出​​​​说明​​​​2,思路​​​​数据结构​​​​算法​​​​3,代码​​1,题目描述SampleInput1:5013001......
  • wordpress 调用特色图片
    调用代码get_post_thumbnail_id():获取文章缩略图IDget_the_post_thumbnail_url():获取文章缩略图链接the_post_thumbnail_url():这个函数直接显示文章缩略图链接get_the......
  • 完全背包:数组组合,买书
    数字组合原题链接:https://www.acwing.com/problem/content/280/思路可以看出是一个完全背包,下面来分析完全背包dp状态表示集合:f[i][j]表示从前i个选,数字总和为j的方......
  • TCP与UDP的区别
    引言网络协议是每个前端工程师都必须要掌握的知识,TCP/IP中有两个具有代表性的传输层协议,分别是TCP和UDP,本文将介绍下这两者以及它们之间的区别。一、TCP/IP网络模型......
  • 线性DP-2444. 统计定界子数组的数目
    问题描述给你一个整数数组nums和两个整数minK以及maxK。nums的定界子数组是满足下述条件的一个子数组:子数组中的最小值等于minK。子数组中的最大值等于m......
  • Docker实战:Docker安装WordPress,快速搭建自己的博客
    1、WordPress介绍官网:​​WordPress.com:快速、安全的受管WordPress托管服务​​WordPress是一种基于php编程语言开发的CMS管理系统,WordPress有丰富的插件和模板,用户可以快......