题目链接

bzoj2660: [Beijing wc2012]最多的方案

题解

对于一个数的斐波那契数列分解,他的最少项分解是唯一的

我们在拆分成的相临两项之间分解后者,这样形成的方案是最优且不重的

我们可以把它的分解某一项拆分

设dp[i][1/0]表示 对于最少拆分成的第i项斐波那切数拆不拆

在上一项j与这一项i的斐波那契数之间拆i项共有(i-j)/2种拆分方法,

转移方程就有了

代码

/*
对于一个数的斐波那契数列分解,他的最少项分解是唯一的
我们在拆分成的相临两项之间分解后者,这样形成的方案是最优且不重的
我们可以把它的分解某一项拆分
设dp[i][1/0]表示 对于最少拆分成的第i项斐波那切数拆不拆
在上一项j与这一项i的斐波那契数之间拆i项共有(i-j)/2种拆分方法,
转移方程就有了
*/
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
inline int read() {
int x = 0,f = 1;char c = getchar();
while(c < '0'||c > '9')c = getchar();
while(c <= '9' &&c >= '0')x = x * 10 + c - '0',c = getchar();
return x * f;
}
LL f[107];
int a[107],tmp[107];
LL dp[107][2];
int main() {
f[1] = 1;f[2] = 2;
LL n;
scanf("%lld",&n);
int num = 3; for(num = 3;;++ num) {f[num] = f[num - 1] + f[num - 2]; if(f[num] > n) break;}
int sum = 0;
for(int i = num;i >= 1;-- i) if(n >= f[i]) n -= f[i],tmp[++ sum] = i;
for(int cnt = 0,i = sum;i >= 1;-- i) a[++ cnt] = tmp[i];
dp[1][1] = 1;
dp[1][0] = a[1] - 1 >> 1;
for(int i = 2;i <= sum;++ i) {
dp[i][1] = dp[i - 1][1] + dp[i - 1][0];
dp[i][0] = dp[i - 1][1] * (a[i] - a[i - 1] - 1 >> 1) + dp[i - 1][0] * (a[i] - a[i - 1] >> 1);
}
printf("%lld\n",dp[sum][1] + dp[sum][0]);
return 0;
}

最新文章

  1. 国外干货!6个方法助你设计出优秀的APP
  2. VISUAL STUDIO 调试
  3. POJ3252 Round Numbers(不重复全排列)
  4. MyBatis学习总结_04_解决字段名与实体类属性名不相同的冲突
  5. HDOJ2013蟠桃记
  6. javascript笔记03:易犯错的比较运算
  7. java 启用新线程异步调用
  8. SpringMVC10数据验证
  9. grunt -- javascript自动化工具
  10. 【jquery插件】-网页下雪效果
  11. windows下python+Django+eclipse开发环境的配置
  12. (转载)oracle的v$sqlarea表
  13. ElasticSearch 学习记录之ES高亮搜索
  14. [UWP]使用Reveal
  15. weex 启动 android 模拟器(mac环境)
  16. CSRF的本质及防御
  17. 服务器资源监控插件(jmeter)
  18. js事件、事件流以及target、currentTarget、this那些事
  19. 采用Google预训bert实现中文NER任务
  20. JavaWeb学习(二)———Tomcat服务器学习和使用(一)

热门文章

  1. Spring Boot1.5X升级到2.0
  2. 20165230 2017-2018-2 《Java程序设计》第7周学习总结
  3. 【TortoiseSVN】windows中连接SVN服务器的工具
  4. imperva命令行查看流量值大小
  5. 源码安装postgresql数据库
  6. 一步一步搭建 oracle 11gR2 rac+dg之grid安装(四)【转】
  7. JVM常用启动参数+常用内存调试工具
  8. clog,cout,cerr 输出机制
  9. Django-模板继承、包含和静态文件配置
  10. Jenkins忘记用户名密码