http://www.lydsy.com/JudgeOnline/problem.php?id=2660

很容易想到是先把n表示成最大的两个斐波那契数相加,然后再拆分这两个斐波那契数

把数表示成斐波那契进制的形式,第i位表示有没有第i个斐波那契数

比如16=13+3     001001

那么拆分一个数就是把一个1变成0,左边的两个0变成1

前面的1不影响后面

后面1拆出的两个1不能拆到前面1的前面

所以b[i] 表示n的第i个1是第几项斐波那契数

所以dp[i][0/1] 表示b中的i所在位(n的第b[i]个1)是0/1的方案数

如果这个位是1,dp[i][0]=dp[i-1][0]+dp[i-1][1]

如果这个位是0,即这个1被拆了,他能拆的次数是 与前面的1之间的0的个数/2

所以若i-1是1,两个1之间有 b[i]-b[i-1]-1个0

若i-1是0,两个1之间有b[i]-b[i-1]个0

dp[i][1]=dp[i-1][1]*(b[i]-b[i-1]-1)/2+dp[i-1][0]*(b[i]-b[i-1])/2

#include<cstdio>
#include<algorithm>typedef long long LL;using namespace  std;LL f[101];int b[101];LL dp[101][2]; int main()
{LL n;scanf("%lld",&n);f[1]=1; f[2]=2;int t;for(t=3;f[t-1]+f[t-2]<=n;++t) f[t]=f[t-1]+f[t-2];int m=0;for(int i=t-1;i;--i)if(n>=f[i]) b[++m]=i,n-=f[i];reverse(b+1,b+m+1);dp[1][1]=1;dp[1][0]=b[1]-1>>1;for(int i=2;i<=m;++i){dp[i][1]=dp[i-1][0]+dp[i-1][1];dp[i][0]=dp[i-1][1]*(b[i]-b[i-1]-1>>1)+dp[i-1][0]*(b[i]-b[i-1]>>1);}printf("%lld",dp[m][0]+dp[m][1]);
}

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8267443.html

bzoj千题计划213:bzoj2660: [Beijing wc2012]最多的方案相关推荐

  1. BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 刷题就图一乐 题目链接 https://hydro.ac/d/bzoj/p/2150 是 hydro ...

  2. BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2151 是 hydro 的 BZOJ ...

  3. BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...

  4. bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼

    http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...

  5. bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战

    http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加 ...

  6. bzoj千题计划203:bzoj3994: [SDOI2015]约数个数和

    http://www.lydsy.com/JudgeOnline/problem.php?id=3994 设d(x)为x的约数个数,给定N.M,求 用到的一个结论: 证明: 枚举n的约数i,枚举m的约 ...

  7. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  8. bzoj千题计划201:bzoj1820: [JSOI2010]Express Service 快递服务

    http://www.lydsy.com/JudgeOnline/problem.php?id=1820 很容易想到dp[i][a][b][c] 到第i个收件地点,三个司机分别在a,b,c 收件地点的 ...

  9. bzoj千题计划303:bzoj4827: [Hnoi2017]礼物

    https://www.lydsy.com/JudgeOnline/problem.php?id=4827 式子化简一下,发现最后只跟 Σ xi*yi 有关 第二个序列反转,就可以用FFT优化 注意: ...

最新文章

  1. 用滑动窗口来解决最长无重复子串问题
  2. 洛谷1006 传纸条
  3. java 去除干扰_【Selenium-WebDriver实战篇】Java丨验证码图片去除干扰像素,方便验证码的识别(转)...
  4. ./ 表示当前路径 ../ 表示上一级目录路径
  5. 同步数据库仅在Worker内,目前只有Chrome6支持
  6. linux的bash脚本
  7. Asp.net MVC - 使用PRG模式(附源码)
  8. inquirer:命令行中与用户进行交互的js库
  9. 倍福PLC使用Visualization功能实现可视化界面
  10. c语言学籍信息录入,C语言程序报告 学生学籍信息管理系统.doc
  11. 专治不明觉厉:深度解密IBM黑科技量子计算机
  12. 深刻认识差模电压和共模电压
  13. About norms(范数)
  14. Mac移动硬盘不正确断开连接导致无法读取加载的解决方法
  15. 学报格式和论文格式一样吗_学报论文发表格式有什么要求
  16. 最新易语言调用大漠插件制作脚本入门教程
  17. CPU中的寄存器和地址概念
  18. VUE之Vxe-table动态生成多级表头及后端返回数据的处理
  19. MYSQL DELETE语法
  20. 硬核!全网最全Nginx配置指令,建议收藏~

热门文章

  1. vba里面的日期数据转换异常(Format error)(使用IsDate方法部分解决)
  2. 深度学习用于视频检测_视频如何用于检测您的个性?
  3. Linux TCP/IP中L4L3的实现框架:udp recv部分
  4. 背账100万,不付利息不用还钱,银行套路好深
  5. 《城邦暴力团》:一部奇书、反书、隐书
  6. J-LINK segger 驱动,MDK5.15版本,用于解决**JLink Warning: Mis-aligned memory write: Address: 0x20000000......
  7. linux tmux 详细教程,Linux下的神器介绍之Tmux分屏器
  8. mysql数据库子查询的使用_MySQL数据库使用子查询方式更新数据优化及思考
  9. JQ 全选后获取选中的值_JQ完全学习版本
  10. sync是同步还是非同步_音视频是怎么保持同步的?(四)