LOJ6089 小Y的背包计数问题 背包
正解:背包
解题报告:
好烦昂感觉真的欠下一堆,,,高级数据结构知识点什么的都不会,基础又麻油打扎实NOIp前的题单什么的都还麻油刷完,,,就很难过,,,哭辣QAQ
不说辣看这题QwQ!
首先注意到当i>=√n时相当于是有无穷个的
可以想到对不同的物品数量进行分类讨论
对于i<√n,就最普通的背包,f[i][j]:第i个物品已装容量为j的方案数
转移就是f[i][j]=∑f[i-1][j-k*i](0<=k<=i)(这个显然可以降维变成f[i]:容量为i的方案数
然后这儿有两种优化方法,分别港下QwQ
1)
首先想到最朴素的算法就是枚举ijk,布吉岛能不能过,应该布星不然为什么要优化×
所以考虑优化,就,另开数组sum[i]:容量为i的方案数
我知道听起来跟一样的似的,,,其实sum有点类似于f的替代品,只是因为转移的时候如果直接修改f的值是布星的,修改前后的值都要存下来,所以开了俩数组(,,,还是麻油表达好,下午港QAQ
然后在转移的时候就是这样的:
对于sum数组,就跟完全背包转移一样的,从小到大地for转移一下
然后就从sum转移到f
完全背包和多重背包的转移就在于个数的限制嘛,所以从sum转移到f的时候只要判断一下j的大小
如果j<=i*i,j就能从所有小于等于它的转移过来,不用管
如果j>i*i,就不是能从所有小于等于它的转移过来的(因为物品数量的限制嘛QwQ
所以要减去不能转移过来的,也就是sum[j-i*i]
然后就转移完辣
2)
仔细看转移方程,设j-k*i=j0,显然j和j0在%i意义下同余
这样子再对剩余系做个前缀和,也是可行的,而且更快一些,但是难理解一些我理解了半天QAQ
这两种的代码我都会放的QwQ
然后对于i>=√n,就相当于是麻油个数限制了鸭,所以就相当于是跑个完全背包辣
然后问题就转化成了整数划分问题,要求出一个和为n,最小数>=√n的序列,为了防重,强制设定该序列为一个单调不下降序列w
那转移就是,要么直接在序列的最前面加上一个√n,要么全部+=1
显然这样就可以不重不漏地构造出所有的方案了
那就是设g[i][j]:分出了i个数,和为j的方案数
由上面得出的转移可以列出转移方程:g[i][j]=g[i][j-i]+g[i-1][j-√n]
最后把两部分拼凑在一块儿就乘法原理+加法原理,最基础的小学奥数思想不说辣QAQ
具体代码中午放趴QAQ
LOJ6089 小Y的背包计数问题 背包的更多相关文章
- [loj6089]小Y的背包计数问题
https://www.zybuluo.com/ysner/note/1285358 题面 小\(Y\)有一个大小为\(n\)的背包,并且小\(Y\)有\(n\)种物品. 对于第\(i\)种物品,共有 ...
- loj6089 小 Y 的背包计数问题
link 吐槽: 好吧开学了果然忙得要死……不过为了证明我的blog还没有凉,还是跑来更一波水题 题意: 有n种物品,第i种体积为i,问装满一个大小为n的背包有多少种方案? $n\leq 10^5.$ ...
- LOJ6089 小Y的背包计数问题(根号优化背包)
Solutioon 这道题利用根号分治可以把复杂度降到n根号n级别. 我们发现当物品体积大与根号n时,就是一个完全背包,换句话说就是没有了个数限制. 进一步我们发现,这个背包最多只能放根号n个物品. ...
- LOJ6089 小Y的背包计数问题 背包、根号分治
题目传送门 题意:给出$N$表示背包容量,且会给出$N$种物品,第$i$个物品大小为$i$,数量也为$i$,求装满这个背包的方案数,对$23333333$取模.$N \leq 10^5$ $23333 ...
- 51nod 1597 有限背包计数问题 (背包 分块)
题意 题目链接 Sol 不会做啊AAA.. 暴力上肯定是不行的,考虑根号分组 设\(m = \sqrt{n}\) 对于前\(m\)个直接暴力,利用单调队列优化多重背包的思想,按\(\% i\)分组一下 ...
- 【LOJ6089】小Y的背包计数问题(动态规划)
[LOJ6089]小Y的背包计数问题(动态规划) 题面 LOJ 题解 神仙题啊. 我们分开考虑不同的物品,按照编号与\(\sqrt n\)的关系分类. 第一类:\(i\le \sqrt n\) 即需要 ...
- LOJ #6089. 小 Y 的背包计数问题
LOJ #6089. 小 Y 的背包计数问题 神仙题啊orz. 首先把数分成\(<=\sqrt n\)的和\(>\sqrt n\)的两部分. \(>\sqrt n\)的部分因为最多选 ...
- 【poj3260-最少找零】多重背包+完全背包
多重背包+完全背包. 买家:多重背包:售货员:完全背包: 开两个数组,分别计算出买家,售货员每个面额的最少张数. 最重要的是上界的处理:上界为maxw*maxw+m(maxw最大面额的纸币). (网上 ...
- POJ 3260 多重背包+完全背包
前几天刚回到家却发现家里没网线 && 路由器都被带走了,无奈之下只好铤而走险尝试蹭隔壁家的WiFi,不试不知道,一试吓一跳,用个手机软件简简单单就连上了,然后在浏览器输入192.168 ...
随机推荐
- PHP代码审计笔记--URL跳转漏洞
0x01 url任意跳转 未做任何限制,传入任何网址即可进行跳转. 漏洞示例代码: <?php $redirect_url = $_GET['url']; header("Locati ...
- Ansible常用模块使用
Ansible官方提供了非常多的模块,还有若干第三方模块,我们也可以自己编写模块. Ansible对远程服务器的操作实际是通过模块完成的,先将模块拷贝到远程服务器,完成操作后,然后在远程服务器上删除该 ...
- lua_gc源码学习
最近发现在大数据量的 lua 环境中,GC 占据了很多的 CPU .差不多是整个 CPU 时间的 20% 左右.希望着手改进.这样,必须先对 lua 的 gc 算法极其实现有一个详尽的理解.我之前读过 ...
- 使用jquery的 $.grep实现es6的filter效果
现在es6是趋势,习惯了es6会方便的多,但是有时候由于项目的限制,会限制es6的使用,在处理数组的时候,往往会想将一个数组进行过滤产生另一个新数组,如es6的filter 如下,我又一个数组,[1, ...
- 原:Myeclipse10+Egit+bitbucket实现版本控制
1.首先在https://bitbucket.org注册账号,建立仓库(repository),这部分有问题的可以看https://confluence.atlassian.com/display/B ...
- m个苹果放入n个篮子
题目 :X个相同的苹果放入Y个篮子,(1)篮子可以为空 ,篮子不同. 放法有C(X+Y-1,Y-1 );// (2)篮子不可以为空,篮子不同.放法有C(X-1,Y-1) //插挡板法 分析有了这个组合 ...
- LeetCode 39 Combination Sum(满足求和等于target的所有组合)
题目链接: https://leetcode.com/problems/combination-sum/?tab=Description Problem: 给定数组并且给定一个target,求出所 ...
- 根据json对象的值替换json数组里的值
功能: var fruitArry=[{name:'durian'},{name:'peach'},{name:'banana'},{name:'pitaya'},{name:'apple'},{na ...
- SPOJ1007 VLATTICE - Visible Lattice Points
VLATTICE - Visible Lattice Points no tags Consider a N*N*N lattice. One corner is at (0,0,0) and th ...
- Windows Server 2012设置WinDbg Kernel Debugging Local
网上主要提到了以下两点: 1.cmd窗口输入bcdedit /debug on,重新启动计算机. 2.下载对应版本Windows符号文件,并添加环境变量_NT_SYMBOL_PATH. 其实根据环境不 ...