题目传送门

通过看题解画图可以发现:

不论怎么转,一列里的横边/一行里的竖边始终平行

当我们加固一个格子时,会让它所在的这一行的竖边和这一列的横边保证垂直

而我们的目标是求所有竖边和横边都保证垂直的方案数

把一行里的所有竖边看成一个点,把一列里的所有横边看成一个点。一共$n+m$个点

把图看成二分图,左侧$n$个点,右侧$m$个点。加固一个格子相当于在左侧的一个点和右侧的一个点之间连边!

我们的问题变成了求解二分图的连通图个数!

接下来就是很套路的$DP$了

定义$f(a,b)$表示左边$a$个点,右边$b$个点的连通二分图个数

对于连通图问题,我们依然采用常规的“固定思想”,我们固定左侧第一个点

直接求联通很困难,考虑用不合法的情况相减,可得$DP$方程:

$f(a,b)=3^{ab}-\sum_{i=0}^{a}\sum_{j=0}^{b}f(i,j)C_{a-1}^{i-1}C_{b}^{j}3^{(a-i)(b-j)}$

(注意i=a,j=b是不能转移的)

初值怎么赋需要思考

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define N1 65
#define M1 3605
#define ll long long
using namespace std;
const ll p=; int n,m,T;
int pw3[M1],C[N1][N1],f[N1][N1]; int main()
{
int i,j,a,b; n=; m=;
for(i=,pw3[]=;i<=n*m;i++) pw3[i]=3ll*pw3[i-]%p;
C[][]=;
for(i=;i<=max(n,m);i++)
{
C[i][]=C[i][i]=;
for(j=;j<i;j++)
C[i][j]=(C[i-][j]+C[i-][j-])%p;
}
f[][]=; f[][]=; //pw3[0]=0;
for(a=,b=;b<=m;b++)
{
f[a][b]=pw3[a*b];
for(j=,i=;j<b;j++)
{
f[a][b]=(f[a][b]-1ll*f[i][j]*C[a-][i-]%p*C[b][j]%p*pw3[(a-i)*(b-j)]%p+p)%p;
}
}
for(a=;a<=n;a++)
{
for(b=;b<=m;b++)
{
f[a][b]=pw3[a*b];
for(i=;i<a;i++)
for(j=;j<=b;j++)
f[a][b]=(f[a][b]-1ll*f[i][j]*C[a-][i-]%p*C[b][j]%p*pw3[(a-i)*(b-j)]%p+p)%p;
for(j=,i=a;j<b;j++)
f[a][b]=(f[a][b]-1ll*f[i][j]*C[a-][i-]%p*C[b][j]%p*pw3[(a-i)*(b-j)]%p+p)%p;
}
}
while(scanf("%d%d",&n,&m)!=EOF)
{
printf("%d\n",f[n][m]);
}
return ;
}

HDU 5729 Rigid Frameworks (联通块计数问题)的更多相关文章

  1. HDU 5729 - Rigid Frameworks

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

  2. HDU 5729 Rigid Frameworks(连通性DP)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5729 [题目大意] 给出一个n*m的方格框,可以在单位矩形中添加两种对角线的线,使得其变得稳定,问 ...

  3. HDU - 1213 dfs求联通块or并查集

    思路:给定一个无向图,判断有几个联通块. AC代码 #include <cstdio> #include <cmath> #include <algorithm> ...

  4. HDU 4738 Caocao's Bridges ——(找桥,求联通块)

    题意:给你一个无向图,给你一个炸弹去炸掉一条边,使得整个图不再联通,你需要派人去安置炸弹,且派去的人至少要比这条边上的人多.问至少要派去多少个,如果没法完成,就输出-1. 分析:如果这个图是已经是多个 ...

  5. 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) ...

  6. Codeforces 731C. Socks 联通块

    C. Socks time limit per test: 2 seconds memory limit per test: 256 megabytes input: standard input o ...

  7. Codeforces Round #369 (Div. 2) D. Directed Roads dfs求某个联通块的在环上的点的数量

    D. Directed Roads   ZS the Coder and Chris the Baboon has explored Udayland for quite some time. The ...

  8. Educational Codeforces Round 5 - C. The Labyrinth (dfs联通块操作)

    题目链接:http://codeforces.com/contest/616/problem/C 题意就是 给你一个n行m列的图,让你求’*‘这个元素上下左右相连的连续的’.‘有多少(本身也算一个), ...

  9. 【UVA10765】Doves and bombs (BCC求割点后联通块数量)

    题目: 题意: 给了一个联通无向图,现在问去掉某个点,会让图变成几个联通块? 输出的按分出的从多到小,若相等,输出标号从小到大.输出M个. 分析: BCC求割点后联通块数量,Tarjan算法. 联通块 ...

随机推荐

  1. 使用Keras编写GAN的入门

    使用Keras编写GAN的入门 GAN Time: 2017-5-31 前言 代码 reference 前言 主要参考了网页[1]的教程,同时主要算法来自Ian J. Goodfellow 的论文,算 ...

  2. PKU 2774 Long Long Message (后缀数组练习模板题)

    题意:给你两个字符串.求最长公共字串的长度. by:罗穗骞模板 #include <iostream> #include <stdio.h> #include <stri ...

  3. [React Testing] Confidently Ship Production React Apps

    We want to make sure that when we ship new code, our users can use the application. The best way we' ...

  4. hdu5119 Happy Matt Friends(dp)

    题目链接:点击打开链接 题目描写叙述:给出n个数.求从这n个数中随意取出一些数(至少取一个)相互异或之后大于m的方案数? 解题思路:分析因为n<=40&&m<=10^6,因 ...

  5. PHP中JSON的应用

    文章来源:PHP开发学习门户 地址:  http://www.phpthinking.com/archives/513 互联网的今天,AJAX已经不是什么陌生的词汇了.说起AJAX,可能会马上想起因R ...

  6. jQuery - 广告图片轮播切换

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. 0.0.0.0 IPAddress.Any 【】127.0.0.1 IPAddress.Loopback 【】localhost

    0.0.0.0  IPAddress.Any https://msdn.microsoft.com/en-us/library/system.net.ipaddress.any(v=vs.110).a ...

  8. B2460 [BeiJing2011]元素 线性基

    这个题是对刚才线性基的一个补充,就是中间有一些小贪心,贪心就很有意思,先按权值排序,然后就瞎搞就行了. 题干: Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们 ...

  9. 第3课 把文件存入Git文档库

    3-1  排除不需要加入文档库的文件 Git追踪文件的方式.Git会将文件和文件夹分成以下三类: 1.   被追踪的(tracked): 2.   忽略的(ignored): 3.   不被追踪的(u ...

  10. E20170906-mk

    portrait   n. 肖像,肖像画; 模型,标本; 半身雕塑像; 人物描写; orientation  n. 方向,定位,取向,排列方向; 任职培训; (外交等的) 方针[态度]的确定; 环境判 ...