HDU 5729 Rigid Frameworks(连通性DP)
【题目链接】 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)的更多相关文章
- HDU 5729 - Rigid Frameworks
题意: 对于一个由n*m个1*1的菱形组成可任意扭曲的矩形(姑且这么说),求添加斜线*(两种)让菱形变成正方形,使得整个矩形固定且无法扭曲的方案数. 分析: n*m的矩形有如下性质:( 平 ...
- HDU 5729 Rigid Frameworks (联通块计数问题)
题目传送门 通过看题解画图可以发现: 不论怎么转,一列里的横边/一行里的竖边始终平行 当我们加固一个格子时,会让它所在的这一行的竖边和这一列的横边保证垂直 而我们的目标是求所有竖边和横边都保证垂直的方 ...
- 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) ...
- HDU 1003 Max Sum --- 经典DP
HDU 1003 相关链接 HDU 1231题解 题目大意:给定序列个数n及n个数,求该序列的最大连续子序列的和,要求输出最大连续子序列的和以及子序列的首位位置 解题思路:经典DP,可以定义 ...
- hdu 5094 Maze 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...
- hdu 2829 Lawrence(斜率优化DP)
题目链接:hdu 2829 Lawrence 题意: 在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和. ...
- hdu 4568 Hunter 最短路+dp
Hunter Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 1231.最大连续子序列-dp+位置标记
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDU 1078 FatMouse and Cheese ( DP, DFS)
HDU 1078 FatMouse and Cheese ( DP, DFS) 题目大意 给定一个 n * n 的矩阵, 矩阵的每个格子里都有一个值. 每次水平或垂直可以走 [1, k] 步, 从 ( ...
随机推荐
- Android 通过HTTPCLINET POST请求互联网数据
private EditText et; private TextView tv; HttpClient client; @Override protected void onCreate(Bundl ...
- Mac Please try running this command again as root/Administrator.
mac 终端安装程序,需要权限,出现以下提示语句: Please try running this command again as root/Administrator. 需要执行以下命令即可: s ...
- 【转】MUD教程--巫师入门教程1
<新巫师入门手册> 第一章:观念篇■ 内容提要:什么是巫师?怎样做一个巫师?如何做好一个巫师? 第二章:上手篇■ 内容提要:最简单的房间怎么写?NPC又怎么写?先看懂一些常用的参数? 第三 ...
- 50行实现简易HTTP服务器
话说由于一直很懒,所以博客好像也没怎么更新...今天有空就写一下吧. 最近在看node.js的时候开始对http协议感兴趣了,毕竟node一开始就是为了做web服务器而产生的.于是试着想了一下大概的思 ...
- Sencha Touch 之 Ext.ComponentManager.get方法使用
HTML代码: <!doctype html> <html> <head> <meta charset="utf-8"> <t ...
- SQL Server 一些重要视图4
sys.master_files 为每一个数据库的每一个文件返回行.
- C#的线程池的那些事
最近在做站时发现,线程池的问题很棘手,所以总结了一篇关于线程池的文章,原文地址:http://www.shuonar.com/blog/ac16496b-87ec-4790-a9ea-d69bbffa ...
- 无线功率 mW 和 dBm 的换算
无线电发射机输出的射频信号,通过馈线(电缆)输送到天线,由天线以电磁波形式辐射出去.电磁波到达接收地点后,由天线接收下来(仅仅接收很小很小一部分功率),并通过馈线送到无线电接收机.因此在无线网络的工程 ...
- mini KMS Activator v1.3破解激活microsoft Office 2010 RTM
利用mini KMS Activator v1.3破解激活microsoft Office 2010 RTM方法,只是为体验office而做测试使用的哦...大家觉得好就自觉购买正版去... 使用步骤 ...
- 对Msn协议的一点点研究
这个也是好奇msn的协议还是2011年的时候写的, 就在网上找啊找啊, 可惜要不是不能用就是C++代码还有就是不完整, 到最后我也没弄成功,只到了下面这步就挂掉了...... 登录成功<=SBS ...