题意:给出在最底层的木头的个数,问有多少种堆放木头的方式。要求木头必须互相挨着在一起。

解法:f[i]表示最底层i个木头的堆放木头的方式。注意递推的思想!
只需知道上一层堆放0~i-1个(即最底层堆放i个木头)的方式数就可以利用加法原理得到f[i]。

方法一、用前缀和求解。
由于要求木头挨在一起,上层为1个时,相应有i-1个位置可放;2个时,相应为i-2。即:f[i]=f[0]+f[1]*(i-1)+f[2]*(i-2)...+f[i-1]   f[i-1]=f[0]+f[1]*(i-2)+f[2]+(i-3)... +f[i-2] ==》 f[i]=f[i-1]+f[1]+f[2]+...+f[i-1]=f[i-1]+sum[i-1](sum[i]表示从f[1]到f[i]的和)

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 using namespace std;
6 #define N 200000
7 #define mod 100000
8 int sum[N],f[N];
9
10 int main()
11 {
12 int T,n;
13 scanf("%d",&T);
14 f[0]=1,sum[0]=0;//sum[i]:f[1~i]
15 for (int i=1;i<=N;i++)
16 {
17 f[i]=(f[i-1]+sum[i-1])%mod;
18 sum[i]=(sum[i-1]+f[i])%mod;
19 }
20 while (T--)
21 {
22 scanf("%d",&n);
23 printf("%d\n",f[n]);
24 }
25 return 0;
26 }

1

方法二、用斐波拉契数列。
由上面的式子可推出——f[i]=f[i-1]+(f[i-1]-f[i-2])+f[i-1]=3f[i-1]-f[i-2] 这就是斐波拉契数列的奇数项通式,而推导我不知道,但还是能发现i=1~...时,f[]=1,2,5,12,34.. 而斐波拉契数列为1,1,2,3,5,8,13,21,34...奇数项重合的。

【noi 2.6_9277】Logs Stacking堆木头(DP)的更多相关文章

  1. 【OpenJudge9277】【递推】Logs Stacking堆木头

    Logs Stacking堆木头 总时间限制: 1000ms 内存限制: 131072kB [描述] Daxinganling produces a lot of timber. Before loa ...

  2. 【Openjudge 9277 Logs Stacking堆木头】 题解

    题目链接:http://noi.openjudge.cn/ch0206/9277/ ... #include <algorithm> #include <iostream> # ...

  3. 基于HTML5堆木头游戏

    今天要来分享一款很经典的HTML5游戏——堆木头游戏,这款游戏的玩法是将木头堆积起来,多出的部分将被切除,直到下一根木头无法堆放为止.这款HTML5游戏的难点在于待堆放的木头是移动的,因此需要你很好的 ...

  4. UVa 103 - Stacking Boxes(dp求解)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  5. 【Luogu】P2254瑰丽华尔兹(堆优化DP)

    题目链接 我也不知道为什么脑子一抽就想了个堆优化……然后贼慢…… 因为上午听不懂wys的电音专场(快速傅立叶变换),然后就做了这么一道题. 首先朴素DP很sb都能秒出.就是枚举时刻.位置(两维)然后转 ...

  6. 征途堆积出友情的永恒「堆优化dp」

    直接写题解: 很简单的dp暴力转移式子:f[i]=MAX{f[j]+max(tax[j],sum[i]-sum[j])} 观察式子,只有一个变量sum[i]; 而其他都为定量; 则考虑维护 两个定量: ...

  7. NOI.AC#2139-选择【斜率优化dp,树状数组】

    正题 题目链接:http://noi.ac/problem/2139 题目大意 给出\(n\)个数字的序列\(a_i\).然后选出一个不降子序列最大化子序列的\(a_i\)和减去没有任何一个数被选中的 ...

  8. 洛谷P1725 琪露诺 (单调队列/堆优化DP)

    显然的DP题..... 对于位置i,它由i-r~i-l的位置转移过来,容易得到方程 dp[i]=dp[i]+max(dp[i−r],...,dp[i−l]). 第一种:n2的暴力,只能拿部分分. 1 ...

  9. BZOJ 2809 [Apio2012]dispatching(斜堆+树形DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2809 [题目大意] 给出一棵树,求出每个点有个权值,和一个乘算值,请选取一棵子树, 并 ...

随机推荐

  1. 【Java基础】枚举类与注解

    枚举类与注解 枚举类的使用 当需要定义一组常量时,强烈建议使用枚举类. 枚举类的理解:类的对象只有有限个,确定的. 若枚举只有一个对象, 则可以作为一种单例模式的实现方式. 枚举类的属性: 枚举类对象 ...

  2. 关于spring-data与elasticsearch的使用,自定义repository

    之前没有使用过spring-data,关于spring-data有很多很棒的设计,例如仅仅只需要声明一个接口就行,你甚至都不需要去实现,spring-data有内置默认的实现类,基本就上完成绝大多数对 ...

  3. PC个人隐私保护小方法

    前言 近期爆出了腾讯读取用户浏览器浏览记录的消息.话不过说直接上图,懂的自然懂. 网上也有详细的分析文章,不管它读取后用来做什么,在你不知情的情况下读取了你的浏览器浏览记录,你说气不气. 虽然在整体大 ...

  4. ctfhub技能树—sql注入—字符型注入

    打开靶机 查看页面信息 查询回显位 查询数据库名(查询所有数据库名:select group_concat(schema_name) from information_schema.schemata) ...

  5. jmeter-命令行执行及测试报告导出

    问题1:GUI方式能够进行测试报告导出? 回答:目前找了很多资料,没有找到采用GUI方式测试完成,然后命令方式导出测试报告: 问题2:命令行导出测试报告的前提都有啥?---- 这里参考了老_张大大的博 ...

  6. jvm源码解析java对象头

    认真学习过java的同学应该都知道,java对象由三个部分组成:对象头,实例数据,对齐填充,这三大部分扛起了java的大旗对象,实例数据其实就是我们对象中的数据,对齐填充是由于为了规则分配内存空间,j ...

  7. spring源码分析之玩转ioc:bean初始化和依赖注入(一)

    最近赶项目,天天加班到十一二点,终于把文档和代码都整完了,接上继续整. 上一篇聊了beanProcess的注册以及对bean的自定义修改和添加,也标志着创建bean的准备工作都做好了,接下来就是开大招 ...

  8. ovsdb-client命令

    ovsdb-server 的命令行接口. 查看有哪些数据库: ovsdb-client list-dbs [server] 查看数据库 schema: ovsdb-client get-schema ...

  9. 解决PHP无法监听9000端口问题/502错误解决办法

    问题背景 配置nginx+php服务的时候,发现网站能打开html,打开php文件就显示502,一般这个是php没启动啊啥的导致不能正常解析php文件. 原因分析 因为nginx解析php文件是交给f ...

  10. Windows和Linux下apache-artemis-2.10.0安装配置

     window下安装配置 一.官网下载 http://activemq.apache.org/artemis/download.html 二.百度网盘下载 链接:https://pan.baidu.c ...