正解:背包

解题报告:

先放传送门!

好烦昂感觉真的欠下一堆,,,高级数据结构知识点什么的都不会,基础又麻油打扎实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的背包计数问题 背包的更多相关文章

  1. [loj6089]小Y的背包计数问题

    https://www.zybuluo.com/ysner/note/1285358 题面 小\(Y\)有一个大小为\(n\)的背包,并且小\(Y\)有\(n\)种物品. 对于第\(i\)种物品,共有 ...

  2. loj6089 小 Y 的背包计数问题

    link 吐槽: 好吧开学了果然忙得要死……不过为了证明我的blog还没有凉,还是跑来更一波水题 题意: 有n种物品,第i种体积为i,问装满一个大小为n的背包有多少种方案? $n\leq 10^5.$ ...

  3. LOJ6089 小Y的背包计数问题(根号优化背包)

    Solutioon 这道题利用根号分治可以把复杂度降到n根号n级别. 我们发现当物品体积大与根号n时,就是一个完全背包,换句话说就是没有了个数限制. 进一步我们发现,这个背包最多只能放根号n个物品. ...

  4. LOJ6089 小Y的背包计数问题 背包、根号分治

    题目传送门 题意:给出$N$表示背包容量,且会给出$N$种物品,第$i$个物品大小为$i$,数量也为$i$,求装满这个背包的方案数,对$23333333$取模.$N \leq 10^5$ $23333 ...

  5. 51nod 1597 有限背包计数问题 (背包 分块)

    题意 题目链接 Sol 不会做啊AAA.. 暴力上肯定是不行的,考虑根号分组 设\(m = \sqrt{n}\) 对于前\(m\)个直接暴力,利用单调队列优化多重背包的思想,按\(\% i\)分组一下 ...

  6. 【LOJ6089】小Y的背包计数问题(动态规划)

    [LOJ6089]小Y的背包计数问题(动态规划) 题面 LOJ 题解 神仙题啊. 我们分开考虑不同的物品,按照编号与\(\sqrt n\)的关系分类. 第一类:\(i\le \sqrt n\) 即需要 ...

  7. LOJ #6089. 小 Y 的背包计数问题

    LOJ #6089. 小 Y 的背包计数问题 神仙题啊orz. 首先把数分成\(<=\sqrt n\)的和\(>\sqrt n\)的两部分. \(>\sqrt n\)的部分因为最多选 ...

  8. 【poj3260-最少找零】多重背包+完全背包

    多重背包+完全背包. 买家:多重背包:售货员:完全背包: 开两个数组,分别计算出买家,售货员每个面额的最少张数. 最重要的是上界的处理:上界为maxw*maxw+m(maxw最大面额的纸币). (网上 ...

  9. POJ 3260 多重背包+完全背包

    前几天刚回到家却发现家里没网线 && 路由器都被带走了,无奈之下只好铤而走险尝试蹭隔壁家的WiFi,不试不知道,一试吓一跳,用个手机软件简简单单就连上了,然后在浏览器输入192.168 ...

随机推荐

  1. 使用 requests 进行身份认证

    如下图,有些网站需要使用用户名密码才可以登录,我们可以使用 requests 的 auth 参数来实现 import requests req = requests.get("http:// ...

  2. 51单片机的idata,xdata,pdata,data的详解(转)

    data: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小. bit :是指0x20-0x2f的可位寻址区idata:固定指前面0x00-0xff的2 ...

  3. PON系统基础知识简介

    一  PON基础知识 1.1 PON技术概念 PON(Passive Optical Network)即无源光网络,一种基于点到多点(P2MP)拓朴的技术.“无源”指ODN(光分配网络)不含有任何电子 ...

  4. 【node.js】Error: CERT_UNTRUSTED

    背景 : 在linux centos7 上 进行npm 命令是报错: Error: CERT_UNTRUSTED 解决办法: 关掉HTTPS就好了 npm config set strict-ssl ...

  5. 【小程序+thinkphp5】 用户登陆,返回第三方session3rd

    服务器环境: centos7   php7.0 准备工作: 注册小程序,并获取 appid .appsecret 下载微信解密算法sdk : https://mp.weixin.qq.com/debu ...

  6. css布局 - 常规上中下分左右布局的一百种实现方法(更新中...)

    一. 上中下左固定 - fixed+margin 概括:如图,此种布局就是顶部.底部和左侧固定不动,只有中间右侧超出可滚动. html: <header>我是头部position: fix ...

  7. vue比较模板来跟新数据

    一,使用场景: 点击menu通过路由,跳转当前列表,第二次点击menu,希望可以刷新列表: 二,解决思路: 给路由添加时间戳: 三,参考观点: 用 :key管理可复用的元素 模板相同,会造成一种“复用 ...

  8. 属性特性get/set

    get/set访问器是属性的特性: 特性只有内部才用,因此在javaScript中不能直接访问他们: (1)数据属性——包含一个数据值的位置.这个位置可以读入和写入值. 数据属性有描述其行为的四个特性 ...

  9. Linux的账号口令机制及其爆破

    账号保存 谈到linux的账号认证,其实就是如何保存于通过口令(password)鉴别,这里首先要将两个文件,一个是/etc/passwd,另外一个是/etc/shadow. /etc/passwd文 ...

  10. 一篇博客搞定redis基础

    redis简介 redis 一款高性能key-value数据库,实际上多用作缓存队列或者消息分发(celery),但是最常常被用来做缓存. redis安装 源码安装 $ wget http://dow ...