P1990 覆盖墙壁
来源:互联网 发布:淘宝怎么开通旺铺 编辑:程序博客网 时间:2024/06/11 01:34
你有一个长为N宽为2的墙壁,给你两种砖头:一个长2宽1,另一个是L型覆盖3个单元的砖头。如下图:
0 0
0 00
砖头可以旋转,两种砖头可以无限制提供。你的任务是计算用这两种来覆盖N*2的墙壁的覆盖方法。例如一个2*3的墙可以有5种覆盖方法,如下:
012 002 011 001 011
012 112 022 011 001
注意可以使用两种砖头混合起来覆盖,如2*4的墙可以这样覆盖:
0112
0012
给定N,要求计算2*N的墙壁的覆盖方法。由于结果很大,所以只要求输出最后4位。例如2*13的覆盖方法为13465,只需输出3465即可。如果答案少于4位,就直接输出就可以,不用加0,如N=3,时输出5。
0 0
0 00
砖头可以旋转,两种砖头可以无限制提供。你的任务是计算用这两种来覆盖N*2的墙壁的覆盖方法。例如一个2*3的墙可以有5种覆盖方法,如下:
012 002 011 001 011
012 112 022 011 001
注意可以使用两种砖头混合起来覆盖,如2*4的墙可以这样覆盖:
0112
0012
给定N,要求计算2*N的墙壁的覆盖方法。由于结果很大,所以只要求输出最后4位。例如2*13的覆盖方法为13465,只需输出3465即可。如果答案少于4位,就直接输出就可以,不用加0,如N=3,时输出5。
输入输出格式 Input/output
输入格式:
一个整数N(1<=N<=1000000),表示墙壁的长。
输出格式:
输出覆盖方法的最后4位,如果不足4位就输出整个答案。
一个整数N(1<=N<=1000000),表示墙壁的长。
输出格式:
输出覆盖方法的最后4位,如果不足4位就输出整个答案。
输入输出样例 Sample input/output
样例测试点#1
13
输出样例:
3465
题目链接:http://www.luogu.org/problem/show?pid=1990#
解题思路:状压DP,以宽为行长为列从左到右dp,dp [ i ] [ j ]表示第 i 列状态为 j 的情况共有多少种情况。为描述方便,我用1代表格子被覆盖,0代表未被覆盖,其中
状态0: 0 状态1: 1 状态2: 0 状态3: 1 0 0 1 1初始化:dp[1][0]=0; //不会出现这种情况;dp[1][1]=0; //不会出现这种情况;
dp[1][2]=0; //不会出现这种情况;
dp[1][3]=1; //放一块第一种砖头;
dp[2][0]=1; //放一块第一种砖头;
dp[2][1]=1; //放一块第二种砖头;
dp[2][2]=1; //放一块第二种砖头;
dp[2][3]=2; //放两块第一种砖头,有横着放和竖着放两种;
代码如下:
#include <cstdio>#include <cstring>const int maxn=1000000+10;int dp[maxn][4];int main(void){int n;scanf("%d",&n);dp[1][0]=0;dp[1][1]=0;dp[1][2]=0;dp[1][3]=1;dp[2][0]=1;dp[2][1]=1;dp[2][2]=1;dp[2][3]=2;for(int i=3;i<=n;i++){dp[i][0]=(dp[i-1][3])%10000;dp[i][1]=(dp[i-1][2]+dp[i-1][0])%10000;dp[i][2]=(dp[i-1][1]+dp[i-1][0])%10000;dp[i][3]=(dp[i-1][3]+dp[i-1][1]+dp[i-1][2]+dp[i-1][0])%10000;}printf("%d\n",dp[n][3]%10000);}
0 0
- P1990 覆盖墙壁
- 【动态规划】覆盖墙壁
- 【 u234】覆盖墙壁
- luogu 1990 覆盖墙壁 (状压dp)
- 【递推】【动态规划】【数列】第二题 覆盖墙壁(wall.pas/c/cpp)
- 墙壁涂色
- 墙壁光缆铺设
- 计蒜课-墙壁涂色
- 墙壁网线口的做法
- 超酷墙壁DIY教程
- 30.在墙壁间反弹
- 32. 更加有效地墙壁反弹
- 哈佛图书馆墙壁训言
- 制作 墙壁剥落的效果
- 家里墙壁发霉是怎么一回事
- UBi+Kinect:把任何墙壁变触摸屏
- Unity3d人物与墙壁碰撞问题求解
- 实现角色与墙壁的来回碰撞
- 魔方阵
- 线程的终止和私有数据
- linux 线程属性函数总结
- Servlet注意事项
- 【Android】解决Genymotion下载设备失败的方法(Connection Timeout)
- P1990 覆盖墙壁
- 项目1-个人所得税计算器
- 记录学习中遇到的问题和解决方案,随着技术提高不断分析心得
- C语言小结2
- android布局
- 深入JSP
- 构造函数
- 会话跟踪
- 百度真多多的内容