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 ...
随机推荐
- ubuntu11.10 64bit 编译android 4.0
前言: 据说google内部使用的的ubuntu版本始终是10.4, 而我一直使用的编译2.3Gingerbread的 11.04下补充安装uuid-dev和liblzo2-dev两个库就可以直接编译 ...
- MQTT服务器搭建--Mosquitto用户名密码配置
Mosquitto用户认证配置 前言:基于Mosquitto服务器已经搭建成功,大部分都是采用默认的是允许匿名用户登录模式,正式上线的系统需要进行用户认证. 1.用户参数说明 Mosquitto服务器 ...
- 解决node里面的中文乱码
今天咋学习node的时候,跟着视频里在撸代码,但是却出现了中文乱码的情况,视频中的谷歌浏览器可能和我的版本不一致,先看代码吧: 'use strict'; const http = require(& ...
- IOS音频1:之采用四种方式播放音频文件(一)AudioToolbox AVFoundation OpenAL AUDIO QUEUE
本文转载至 http://blog.csdn.net/u014011807/article/details/40187737 在本卷你可以学到什么? 采用四种方法设计应用于各种场合的音频播放器: 基于 ...
- Android中实现定时器的3中方法
在Android开发中,定时器一般有以下3种实现方法: 一.采用Handler与线程的sleep(long)方法: 二.采用Handler的postDelayed(Runnable, long)方法: ...
- 【设计模式】MVC,MVP 和 MVVM 的区别
复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP ...
- 傲游浏览器---自定义 UserAgent 字符串
遨游浏览器:http://www.maxthon.cn/ 自定义 UserAgent : http://www.fynas.com/ua 手机UserAgent大全 设备 系统 浏览器 User-A ...
- [原]git的使用(三)---管理修改、
上接git的使用(二) 7.管理修改 [要理解的概念]为Git跟踪并管理的是修改,而非文件 什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一 ...
- iOS教程:Core Data数据持久性存储基础教程
目录[-] 创建Core Data工程 创建数据模型 测试我们的数据模型 来看看SQL语句的真面目 自动生成的模型文件 创建一个表视图 之后看些什么? 就像我一直说的,Core Data是iOS编程, ...
- like to do vs like doing
I like to eat apple 表示我喜欢吃苹果这种食物. I like eating apple 表示我喜欢吃苹果这种食物 或者 表示我喜欢吃苹果这个过程. like to do,表达的是倾 ...