【noi 2.6_9277】Logs Stacking堆木头(DP)
题意:给出在最底层的木头的个数,问有多少种堆放木头的方式。要求木头必须互相挨着在一起。
解法: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)的更多相关文章
- 【OpenJudge9277】【递推】Logs Stacking堆木头
		
Logs Stacking堆木头 总时间限制: 1000ms 内存限制: 131072kB [描述] Daxinganling produces a lot of timber. Before loa ...
 - 【Openjudge 9277 Logs Stacking堆木头】 题解
		
题目链接:http://noi.openjudge.cn/ch0206/9277/ ... #include <algorithm> #include <iostream> # ...
 - 基于HTML5堆木头游戏
		
今天要来分享一款很经典的HTML5游戏——堆木头游戏,这款游戏的玩法是将木头堆积起来,多出的部分将被切除,直到下一根木头无法堆放为止.这款HTML5游戏的难点在于待堆放的木头是移动的,因此需要你很好的 ...
 - UVa 103 - Stacking Boxes(dp求解)
		
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
 - 【Luogu】P2254瑰丽华尔兹(堆优化DP)
		
题目链接 我也不知道为什么脑子一抽就想了个堆优化……然后贼慢…… 因为上午听不懂wys的电音专场(快速傅立叶变换),然后就做了这么一道题. 首先朴素DP很sb都能秒出.就是枚举时刻.位置(两维)然后转 ...
 - 征途堆积出友情的永恒「堆优化dp」
		
直接写题解: 很简单的dp暴力转移式子:f[i]=MAX{f[j]+max(tax[j],sum[i]-sum[j])} 观察式子,只有一个变量sum[i]; 而其他都为定量; 则考虑维护 两个定量: ...
 - NOI.AC#2139-选择【斜率优化dp,树状数组】
		
正题 题目链接:http://noi.ac/problem/2139 题目大意 给出\(n\)个数字的序列\(a_i\).然后选出一个不降子序列最大化子序列的\(a_i\)和减去没有任何一个数被选中的 ...
 - 洛谷P1725 琪露诺 (单调队列/堆优化DP)
		
显然的DP题..... 对于位置i,它由i-r~i-l的位置转移过来,容易得到方程 dp[i]=dp[i]+max(dp[i−r],...,dp[i−l]). 第一种:n2的暴力,只能拿部分分. 1 ...
 - BZOJ 2809 [Apio2012]dispatching(斜堆+树形DP)
		
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2809 [题目大意] 给出一棵树,求出每个点有个权值,和一个乘算值,请选取一棵子树, 并 ...
 
随机推荐
- 【Java基础】Java 语言概述
			
Java 语言概述 主要应用场景 JavaEE.大数据.Android 开发方向. 基础知识概述 编程语言核心结构 变量.基本语法.分支.循环.数组.- Java 面向对象的核心逻辑 OOP.封装.继 ...
 - wpf 中 Ellipse 对象对动画性能的影响
			
vs2019 .NetFramework 4.8 win10-64 1909 接手一个wpf项目,某窗口中包含大量的 Shape 对象(线,矩形,圆形等). 这些内容要匀速的向左平移,类似于游戏&qu ...
 - 【Linux】NFS相关小问题
			
NFS一些小问题: 1. 由于实验环境中,给了rw权限,但是执行的时候,还是提示Permission denied 于是查看nfs服务端,查看/etc/exports文件是否配置有问题 网上很多人配置 ...
 - 腾讯云COS对象存储占据数据容灾C位
			
说到公有云容灾,大家首先想到的是云上数据备份. 然而,随着企业核心业务逐渐从线下迁移到云上,客户提出了更高的要求.如何确保云上业务的高可用.数据的高可靠,这对云厂商提出了新的挑战. 腾讯云作为全球领先 ...
 - BAPI_GOODSMVT_CREATE的参数GOODSMVT_CODE的说明
			
BAPI_GOODSMVT_CREATE 的功能就是用于货物移动,其主要可以实现MB*事物的一些功能,其中该BAPI的参数 GOODSMVT_CODE就控制了对应哪个事物码的功能,下面给出该参数的值和 ...
 - 入门OJ:Coin
			
题目描述 你有n个硬币,第i硬币面值为ai,现在总队长想知道如果丢掉了某个硬币,剩下的硬币能组成多少种价值?(0价值不算) 输入格式 第一行一个整数n 第二行n个整数.,a1,a2-an. 1< ...
 - [Ceoi2004]Journey
			
题目描述 给出N个点,及你的出发点K. 接下来N-1行描述有关边的开始点,结束点,边长.保证图中不会有环 接下来给出数字J,代表你要走多少个点. 接下来J个数字,代表你要走过的点的编号.当然你可以自己 ...
 - STL_deque容器
			
一.deque简介 deque是"double-ended queue"的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的. deque在接口 ...
 - GlusterFS数据存储脑裂修复方案最全解析
			
本文档介绍了glusterfs中可用于监视复制卷状态的heal info命令以及解决脑裂的方法 一. 概念解析 常见术语 名称 解释 Brick GlusterFS 的基本存储单元,由可信存储池中服务 ...
 - Kubernetes之GlusterFS集群文件系统高可用安装,提供动态卷存储
			
GlusterFS高可用安装 一. 准备工作 安装好的k8s集群,提供其中三个节点给GFS,这三个节点都至少有一个可用的裸块设备 在k8s所有节点安装所需要的组件 # ubuntu16.04 add- ...