题目:在m*n的地板上铺上同样的1*2的地板砖,问有多少种铺法。

分析:dp,组合,计数。经典dp问题,状态压缩。

状态:设f(i,j)为前i-1行铺满,第i行铺的状态的位表示为j时的铺砖种类数;

转移:由于仅仅能横铺或者竖铺。那么一个砖块铺之前的状态仅仅有两种;

且假设当前竖放会对下一行产生影响,建立相邻两行状态相应关系。

这里利用dfs找到全部f(i。j)的上一行的全部前置状态f(i-1,k)加和就可以。

f(i。j)= sum(f(i-1,k)){ 当中,f(i-1,k)能够产生f(i。j)状态 };

(大黄的三维DP实现简单,效率较差。)

组合学公式 :π(4cos(pi+i/(h+1))^2+4cos(pi+j/(w+1))^2) { 1<=i<=h/2,1<=j<=w/2 }。

说明:纠结N久最后发现%I64d一直WA。%lld就过了。(2011-09-27 19:15)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef struct node
{int s,l;
}seg;
seg S[ 10 ];long long F[ 12 ][ 1<<11 ];int  V[ 1<<11 ][ 99 ];
int  Count[ 1<<11 ];//用dfs找到能够到达的状态
void dfs( int A, int B, int C )
{if ( !A ) {V[ C ][ ++ Count[ C ] ] = B;return;}else {int V = A&-A;//取得最后一个 1的位置 dfs( A&~V, B&~V, C ); if ( A&(V<<1) ) dfs( A&~(3*V), B, C );}
}int main()
{int n,m;while ( scanf("%d%d",&n,&m) != EOF && m ) {if ( n%2&&m%2 ) {printf("0\n");continue;}if ( m>n ) {int t = m;m = n;n = t;}int M = (1<<m)-1;for ( int i = 0 ; i <= M ; ++ i ) {Count[ i ] = 0;dfs( i, M, i );}for ( int i = 0 ; i <= n ; ++ i )for ( int j = 0 ; j <= M ; ++ j )F[ i ][ j ] = 0LL;F[ 0 ][ M ] = 1LL;for ( int i = 1 ; i <= n ; ++ i )for ( int j = M ; j >= 0 ; -- j ) for ( int k = Count[ j ] ; k >= 1 ; -- k ) F[ i ][ j ] += F[ i-1 ][ V[ j ][ k ] ];printf("%lld\n",F[ n ][ M ]);}return 0;
}

转载于:https://www.cnblogs.com/clnchanpin/p/6788932.html

zoj 1100 - Mondriaan#39;s Dream相关推荐

  1. poj 2411 Mondriaan#39;s Dream 【dp】

    题目:poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然后问你最多由多少种不同的方案. 分析:这是一个比較经典的题目.网上各种牛B写法一大堆. ...

  2. POJ 2411 Mondriaan#39;s Dream (dp + 减少国家)

    链接:http://poj.org/problem?id=2411 题意:题目描写叙述:用1*2 的矩形通过组合拼成大矩形.求拼成指定的大矩形有几种拼法. 參考博客:http://blog.csdn. ...

  3. HDU 4430 amp; ZOJ 3665 Yukari#39;s Birthday(二分法+枚举)

    主题链接: HDU:http://acm.hdu.edu.cn/showproblem.php?pid=4430 ZJU:http://acm.zju.edu.cn/onlinejudge/showP ...

  4. ZOJ 3587 Marlon#39;s String 扩展KMP

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3587 题意:给出两个字符串S和T.S,T<=100000.拿出 ...

  5. 神牛笔记:吉林大学ACM总结(fennec)

    其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的 ...

  6. 一位学长的ACM总结(感触颇深)

    发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...

  7. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  8. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  9. ZOJ 题目分类,学校的一个巨巨做的。

     DP: 1011      NTA                    简单题 1013      Great Equipment        简单题 1024      Calendar ...

  10. poj题目详细分类及算法推荐题目

    DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题  ...

最新文章

  1. 【设计原则和建议】 构造和析构对象
  2. ua获取手机型号_无牌山寨手机的数据提取解决方案
  3. vmware virtualization software
  4. Linux CentOS 7 YouCompleteMe相关配置。
  5. Redis -- 基础操作 [2]
  6. c语言之计算两个数的大数
  7. init,service和systemctl的区别
  8. python颜色填充代码_求懂WORD的大佬怎么一次性填充颜色或者使用python识别
  9. linux 工业 网络协议,简单了解Linux TCP/IP协议栈
  10. Python实战从入门到精通第八讲——字符串与文本2之合并拼接字符串
  11. office2007中文版下载和功能介绍
  12. fw150us的linux驱动下载,FAST FW150US2.0无线网卡驱动
  13. 三维GIS引擎平台设计
  14. c语言薛定谔方程,如何解薛定谔方程?-- k · p method
  15. 机器学习练习----神经网络的标准BP算法(误差逆传播算法)
  16. “新元宇宙”奇科幻小说原创作品系列连载《地球人奇游天球记》第三回零点惊魂
  17. 用计算机求算术平方根的按键顺序,6.1 .2 用计算器求算术平方根及算术平方根的应用...
  18. 前端扁平化数据转树形数据_javascript将扁平的数据转为树形结构的几种方法
  19. CleanMyMac最新版V4.11.4版MAC电脑系统加速器
  20. 1022场小红书品牌带货直播数据复盘,双11小红书直播间投放策略

热门文章

  1. 刷新输出缓冲区(C++)
  2. 什么是document对象?如何获取文档对象上的元素?_JavaScript DOM操作元素的方法,你还记得多少?...
  3. Hadoop中的一些基本操作
  4. http是不是中间件_等保2.0涉及的Apache Tomcat中间件(上)
  5. 使用QueenSono从ICMP提取数据
  6. tail -f 命令卡住
  7. 操作系统面试常问问题
  8. 160.相交链表(力扣leetcode) 博主可答疑该问题
  9. matlab 加随机数,随机数加上100:Matlab
  10. c 程序设计语言第一次作业,重大2017年C++程序设计语言第一次作业(含答案).doc...