【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=5729

【题目大意】

  给出一个n*m的方格框,可以在单位矩形中添加两种对角线的线,使得其变得稳定,问使得其变成稳定图形的方案数。

【题解】

  稳定状态指的是在n*m范围内每行每列都有一个固定的格子,并且联动,计算合法的情况非常的复杂,难以枚举,因此我们可以枚举非法情况,从组合数中减去即可。非法情况即将图形划分为合法部分和非法部分,注意枚举全面。

【代码】

#include <cstdio>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
const long long mod=1e9+7;
long long dp[15][15][105],c[105][105];
int n,m;
long long pow(long long a,long long b){
long long tmp=1; a%=mod;
while(b){
if(b&1)tmp=tmp*a%mod;
a=a*a%mod;
b>>=1;
}return tmp;
}
int main(){
rep(i,100){
c[i][0]=c[i][i]=1;
rep(j,i-1)c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
}c[0][0]=dp[1][0][0]=dp[0][1][0]=1;
rep(i,10)rep(j,10){
if(i==1||j==1){dp[i][j][i+j-1]=1;continue;}
rep(k,i*j){
dp[i][j][k]=c[i*j][k];
rep(ii,i)for(int jj=0;jj<=j;jj++){
if(i+j==ii+jj)continue;
for(int kk=0;kk<=k;kk++){
long long tmp=c[i-1][ii-1]*c[j][jj]%mod;
tmp=tmp*dp[ii][jj][kk]%mod;
tmp=tmp*c[(i-ii)*(j-jj)][k-kk]%mod;
dp[i][j][k]=(dp[i][j][k]+mod-tmp)%mod;
}
}
}
}while(~scanf("%d%d",&n,&m)){
long long ans=0;
rep(i,n*m)ans=(ans+pow(2,i)*dp[n][m][i]%mod)%mod;
printf("%lld\n",ans);
}return 0;
}

  

HDU 5729 Rigid Frameworks(连通性DP)的更多相关文章

  1. HDU 5729 - Rigid Frameworks

    题意:    对于一个由n*m个1*1的菱形组成可任意扭曲的矩形(姑且这么说),求添加斜线*(两种)让菱形变成正方形,使得整个矩形固定且无法扭曲的方案数. 分析:    n*m的矩形有如下性质:( 平 ...

  2. HDU 5729 Rigid Frameworks (联通块计数问题)

    题目传送门 通过看题解画图可以发现: 不论怎么转,一列里的横边/一行里的竖边始终平行 当我们加固一个格子时,会让它所在的这一行的竖边和这一列的横边保证垂直 而我们的目标是求所有竖边和横边都保证垂直的方 ...

  3. 2016 Multi-University Training Contest 1 G. Rigid Frameworks

    Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  4. HDU 1003 Max Sum --- 经典DP

    HDU 1003    相关链接   HDU 1231题解 题目大意:给定序列个数n及n个数,求该序列的最大连续子序列的和,要求输出最大连续子序列的和以及子序列的首位位置 解题思路:经典DP,可以定义 ...

  5. hdu 5094 Maze 状态压缩dp+广搜

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...

  6. hdu 2829 Lawrence(斜率优化DP)

    题目链接:hdu 2829 Lawrence 题意: 在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和. ...

  7. hdu 4568 Hunter 最短路+dp

    Hunter Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  8. HDU 1231.最大连续子序列-dp+位置标记

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  9. HDU 1078 FatMouse and Cheese ( DP, DFS)

    HDU 1078 FatMouse and Cheese ( DP, DFS) 题目大意 给定一个 n * n 的矩阵, 矩阵的每个格子里都有一个值. 每次水平或垂直可以走 [1, k] 步, 从 ( ...

随机推荐

  1. leetcode Sudoku Solver python

    #the define of Sudoku is on this link : http://sudoku.com.au/TheRules.aspx Write a program to solve ...

  2. nginx upstream setting

    upstream proxy_1 { server 127.0.0.1:8080; #连接到上游服务器的最大并发空闲keepalive长连接数(默认是未设置,建议与Tomcat Connector中的 ...

  3. Highcharts使用手册

    chart: { type: 'area', ignoreHiddenSeries: false, //如果true,一旦一个系列被隐藏,轴将会扩展剩余的可见系列 }, 这是设置的两个纵坐标轴: yA ...

  4. js监听input等表单输入框的变化事件oninput

    js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变 ...

  5. 【异常处理】java.lang.NoClassDefFoundError

    Exception in thread"main" java.lang.NoClassDefFoundError:org/apache/commons/lang/exception ...

  6. Entity Framework 数据部分更新之Attach &&Detach

    我们经常会遇到这样的问题:Update一个entity的部分数据时,通常需要new一个新的对象,然后事这新的对象Attach到Context中,代码如下所示: /// <summary> ...

  7. Python自动化环境搭建

    安装配置 Eclipse + PyDev + Robotframework 集成开发环境 1.安装JDK安装目录下的jdk-7u17-windows-i586.exe文件(JAVA开发.运行环境)安装 ...

  8. javascript - 工作笔记 (事件绑定二)

    在上篇中的事件绑定方法,相信大家都看到过了. 不过这里有点小小的问题,这些方法,变量都是全局的,难免会与其他的库或者方法发生冲突而被覆盖,因此,我在这里做了小小的封装,如下:  JavaScript ...

  9. yum subversion puppet puppet-server

    yum -y install ruby ruby-libs ruby-shadow yum -y install puppet puppet-server facter yum -y install ...

  10. 关于使用WKWebViewJavascriptBridge报错的问题

    Error message: Undefined symbols for architecture arm64: "_OBJC_CLASS_$_WKWebViewJavascriptBrid ...