【GDOI 2016模拟3.16】图计数
2016-03-16 16:19
274 查看
问题描述
记nn的正整数拆分方案数为fnf_n,求mfn(mod999999599)m^{f_n}\pmod {999999599}n,m≤105n, m\leq 10^5
分析
首先一个很重要的地方就是幂应该要对φ(mod)\varphi (mod)取模。然后就是怎么算正整数拆分。
其实这个本质上是一个完全背包问题,其中物体的重量为11到nn。
考虑重量小于于n−−√\sqrt{n}的物体只有n−−√\sqrt{n}个,重量大于等于n−−√\sqrt{n}的物体只会选n−−√\sqrt{n}个。
那么分开处理,然后合并背包即可。
part1
记fi,jf_{i, j}表示前ii个物体,已加入重量为jj,简单DPDP即可。part2
记gi,jg_{i, j}表示已经加入了ii个物品,重量为jj。那么这里这样子转移。
gi,j=gi−1,j−⌈n√⌉+gi,j−ig_{i, j}=g_{i-1, j-\lceil \sqrt{n} \rceil} + g_{i, j-i}
其中加号以前表示加入一个重量为⌈n−−√⌉\lceil \sqrt{n} \rceil的物体,以后的部分表示将之前加入的物体的重量全部加一。
剩下就是合并背包了。
时间复杂度O(nn−−√)O(n\sqrt n)
空间复杂度O(n)O(n)
相关文章推荐
- Redis中String类型的Value最大可以容纳数据长度
- openssl 实战
- OpenLayers 学习(一)创建一个简单的电子地图
- 求最大最小数
- Redis中String类型的Value最大可以容纳数据长度
- leetcode 12. Integer to Roman
- SQOOP可能会导致HDFS分片数量过多的总结
- jquery判断toggle()的状态
- Eclipse中Outline里各种图标的含义
- MyEclipse安装后需要进行的配置
- 查看ClientDataSet中的Delta数据情况
- 解决QLabel显示图片扭曲的问题
- 插入排序
- VS配置
- 系统宏定义
- 6、CSS基础 part-4
- mybatis 批量插入动态表
- Android基础_日期选择器DatePickerDialog时间选择器TimePickerDialog隐藏输入法
- WebView 载入本地的html