题意:方格n*m,然后对于每一个格子有3种画法1左对角线2右对角线3不画,求让图形稳定的画法有多少种?

思路:通过手画二分图可以发现当二分图联通时改图满足条件,然后我们对于一个dp[n][m]可以利用容器原理先得到所有情况,然后减去不满足情况,那么以一点为中心,假设该点所在的连通块为dp[i][j]那么这时候我们把这些点先用组合数学求出所在连通块对应的组合方式有多少种,然后再是剩下的其余个点随便连都无所谓只要不连接进我原所在连通块就好了。那么我们可以推出式子

#include<bits/stdc++.h>
using namespace std; const int mod = 1e9 + ;
long long dp[][];
long long Th[];
long long in[]; long long C(int n,int m){
if(m > n) return ;
if(m == || n == ) return ;
return in[n] / in[m] / in[n - m];
} void init(){
in[] = in[] = Th[] = ;
for(int i = ; i < ; i ++) Th[i] = Th[i - ] * % mod;
for(int i = ; i < ; i ++) in[i] = in[i - ] * i; for(int I = ; I < ; I ++)
for(int J = ; J < ; J ++){
dp[I][J] = Th[I * J];
for(int i = ; i <= I; i ++)
for(int j = ; j <= J; j ++){
if(I == i && J == j) continue;
dp[I][J] -= C(I - , i - ) * C(J, j) * dp[i][j] % mod * Th[(I - i)*(J - j)] % mod;
((dp[I][J] %= mod) += mod) %= mod;
}
}dp[][] = ;
} int main(){
init();
int n,m;
while(~scanf("%d%d",&n,&m)){
printf("%lld\n",dp[n][m]);
}
return ;
}

Rigid Frameworks (画图二分图规律 + DP + 数学组合容斥)的更多相关文章

  1. # E. Mahmoud and Ehab and the xor-MST dp/数学+找规律+xor

    E. Mahmoud and Ehab and the xor-MST dp/数学/找规律 题意 给出一个完全图的阶数n(1e18),点由0---n-1编号,边的权则为编号间的异或,问最小生成树是多少 ...

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

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

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

  4. POJ 2663 Tri Tiling dp 画图找规律

    状态:d[i]代表n=i时的方案数. 状态转移方程:d[i]=d[i-2]+2*(d[i-2]+d[i-4]+-+d[0]) i只会为偶数,奇数情况不存在,d[0]=1 找状态转移方程的时候画图更好理 ...

  5. 【POJ 1112】Team Them Up!(二分图染色+DP)

    Description Your task is to divide a number of persons into two teams, in such a way, that: everyone ...

  6. ZOJ3872 Beauty of Array---规律 | DP| 数学能力

    传送门ZOJ 3872 Beauty of Array Time Limit: 2 Seconds      Memory Limit: 65536 KB Edward has an array A  ...

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

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

  8. [CSP-S模拟测试]:B(DP+数学)

    题目传送门(内部题45) 输入格式 第一行$3$个整数$n,m,P$.第二行$m$个整数,表示$m$次询问. 输出格式 一行$m$个整数表示答案. 样例 样例输入1: 2 4 40 1 2 3 样例输 ...

  9. [CSP-S模拟测试]:小奇的矩阵(matrix)(DP+数学)

    题目背景 小奇总是在数学课上思考奇怪的问题. 题目描述 给定一个$n\times m$的矩阵,矩阵中的每个元素$a_{i,j}$为正整数.接下来规定:    $1.$合法的路径初始从矩阵左上角出发,每 ...

随机推荐

  1. 【Python基础】random 的高级玩法

    random 模块的高级玩法 1.python 随机产生姓名 方式一: import random xing = [ '赵', '钱', '孙', '李', '周', '吴', '郑', '王', ' ...

  2. SELinux介绍

    SELinux概念 安全加强的Linux,早期的Linux系统安全由系统管理员控制.SELinux就是一些安全规则的集合,类似于人类生活中的法律. DAC:   自由访问控制(以前的linux版本) ...

  3. 多线程之共享变量.md

    共享变量 - 共享变量:当多个线程同时访问一个变量的时候,会产生共享变量的问题 - 案例11 - 解决变量:锁.信号灯: - 锁(Lock): - 是一个标志,表示一个线程在占用一些资源 - 使用方法 ...

  4. EOS config 大全

    https://eosfans.io/topics/930 bnet_plugin bnet-endpoint: 所监听的传入链接的端点. 默认:0.0.0.0:4321 bnet-follow-ir ...

  5. [css]table的拆分

    https://blog.csdn.net/qq_35415600/article/details/70237433 <body> <table border="1&quo ...

  6. Windows本机搭建Redis

    1 下载安装包 GIT:https://github.com/MicrosoftArchive/redis/releases       Redis-x64-3.2.100.zip 百度网盘 :链接: ...

  7. centos7安装Lua

    网官有介绍安装:http://www.lua.org/start.html 由于之前我遇到过致命错误并纪录在:https://blog.csdn.net/bingbingtea/article/det ...

  8. SDN概述:简介、工具、环境部署

    一.前言: 本文初步接触 SDN 的相关概念.需要依次完成下面几项任务: SDN 简介 SDN 工具 SDN 环境部署 推荐阅读 推荐阅读下述内容: Ethane 项目,openflow 的基础 op ...

  9. Linux配置SSH免登录

    [root@Linux01 ~]# ssh-keygen #生成公私钥 [root@Linux01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub hadoopuser@Ha ...

  10. nginx 日志log_format格式

    官方文档: http://nginx.org/en/docs/http/ngx_http_log_module.html The ngx_http_log_module module writes r ...