好矩阵

时间限制:3000ms
单点时限:1000ms
内存限制:256MB

描写叙述

给定n, m。一个n × m矩阵是好矩阵当且仅当它的每一个位置都是非负整数,且每行每列的和 ≤ 2。求好矩阵的个数。模109 + 7

输入

第一行一个整数T,表示測试点个数。

以下T个測试点。

每一个測试点一行。包括两个整数n。m。

1 ≤ T ≤ 104. 1 ≤ n, m ≤ 100.

输出

T行。

每行是相应測试点的答案。

例子输入

1
2 2

例子输出

26

题意非常easy。因为,数量非常大。假设考虑一个一个方格的放,要考虑横向的,又要考虑竖向的,非常复杂,所以不可取。所以一排一排的放,假设,m是一定的,那么。每一排仅仅须要考虑不超过2,且与前面已经排好的不冲突就能够了。

dp[i][a][b]表示,第i排,有a列0,b列1,m - a - b列2,的个数则

dp[i+1][a][b]+= dp[i][a][b];//第i+1排全放0
dp[i+1][a-1][b] += (ll)a * dp[i][a][b];//第i+1排在和为0那些列放一个2
dp[i+1][a-1][b+1] += (ll)a * dp[i][a][b];//第i+1排和为1放一个1
dp[i+1][a-1][b]+= (ll)a * (ll) b * dp[i][a][b];//第i+1排和为0 和为1的列各选一个 放两个1
dp[i+1][a][b-1] += (ll)b * dp[i][a][b];//第i+1排选一个和为1的列放一个1
dp[i+1][a-2][b+2] += (ll)(a * (a-1)/2) * dp[i][a][b];//第i+1排选两个和为0放两个1
dp[i+1][a][b-2] += (ll)(b * (b-1)/2) * dp[i][a][b];//第i+1排选两个和为1的放两个1

总复杂度为o(n^4);

#define N 105
#define M 100005
#define maxn 205
#define MOD 1000000007
int n,m,T;
ll dp[N][N][N],ans[N][N];
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
for(int m = 1;m<=100;m++){
int n = 100;
for(int i =0;i<=n;i++){
for(int a = 0;a<=m;a++){
for(int b = 0;b<=m;b++){
dp[i][a][b] = 0;
}
}
}
dp[0][m][0] = 1;
for(int i = 0;i<n;i++){
for(int a = 0;a<=m;a++){
for(int b = 0;a + b<=m;b++){
dp[i+1][a][b]+= dp[i][a][b];
dp[i+1][a][b] %= MOD;
if(a >= 1){
dp[i+1][a-1][b] += (ll)a * dp[i][a][b];
dp[i+1][a-1][b] %= MOD;
dp[i+1][a-1][b+1] += (ll)a * dp[i][a][b];
dp[i+1][a-1][b+1] %= MOD;
}
if(a >= 1 && b >= 1){
dp[i+1][a-1][b]+= (ll)a * (ll) b * dp[i][a][b];
dp[i+1][a-1][b] %= MOD;
}
if(b >= 1 ){
dp[i+1][a][b-1] += (ll)b * dp[i][a][b];
dp[i+1][a][b-1] %= MOD;
}
if(a >= 2 ){
dp[i+1][a-2][b+2] += (ll)(a * (a-1)/2) * dp[i][a][b];
dp[i+1][a-2][b+2] %= MOD;
}
if(b >= 2 ){
dp[i+1][a][b-2] += (ll)(b * (b-1)/2) * dp[i][a][b];
dp[i+1][a][b-2] %= MOD;
}
}
}
ans[i+1][m] = 0;
for(int a = 0;a<=m;a++){
for(int b = 0;b<=m;b++){
ans[i+1][m] += dp[i+1][a][b];
ans[i+1][m] %= MOD;
}
}
}
}
while(S(T)!=EOF)
{
while(T--){
int s,e;
S2(s,e);
printf("%lld\n",ans[s][e]);
}
}
return 0;
}

hihocoder 1124 : 好矩阵 dp的更多相关文章

  1. hdu 4975 最大流问题解决队伍和矩阵,利用矩阵dp优化

    //刚開始乱搞. //网络流求解,假设最大流=全部元素的和则有解:利用残留网络推断是否唯一, //方法有两种,第一种是深搜看看是否存在正边权的环.见上一篇4888 //至少四个点构成的环,另外一种是用 ...

  2. 矩阵dp

    矩阵dp 这里是矩阵dp,不是矩阵乘法优化dp. 矩阵上的dp好像也没什么特殊的?大概有一个套路就是从上向下,从左向右进行dp吧. 首先第一道题好像不是矩阵dp... 1005 矩阵取数游戏:http ...

  3. hdu4975 网络流解方程组(网络流+dfs判环或矩阵DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4975 A simple Gaussian elimination problem. Time Limit: 20 ...

  4. Poj 2411 Mondriaan's Dream(压缩矩阵DP)

    一.Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, ...

  5. hdu 4975 最大流解决行列和求矩阵问题,用到矩阵dp优化

    //刚开始乱搞. //网络流求解,如果最大流=所有元素的和则有解:利用残留网络判断是否唯一, //方法有两种,第一种是深搜看看是否存在正边权的环,见上一篇4888 //至少四个点构成的环,第二种是用矩 ...

  6. lightOJ 1172 Krypton Number System(矩阵+DP)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1172 题意:一个n进制(2<=n<=6)的数字,满足以下条件:(1)至少包 ...

  7. POJ2778&HDU2243&POJ1625(AC自动机+矩阵/DP)

    POJ2778 题意:只有四种字符的字符串(A, C, T and G),有M中字符串不能出现,为长度为n的字符串可以有多少种. 题解:在字符串上有L中状态,所以就有L*A(字符个数)中状态转移.这里 ...

  8. [hihocoder 1033]交错和 数位dp/记忆化搜索

    #1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an - 1 ...

  9. bzoj1009 KMP+矩阵dp

    https://www.lydsy.com/JudgeOnline/problem.php?id=1009 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(<=Xi<=), ...

随机推荐

  1. 页面下载文件方法,post与get

    一般下载文件,常见使用的是window.open('url'):方法进行下载.若需要带参数,直接在url后面拼接参数,进行传递.window.open方法仅可以进行get方法进行参数提交. 若需要进行 ...

  2. 洛谷P5239 回忆京都

    和 NOIP2016TG 组合数问题 差不多是一样的-- 首先要知道杨辉三角和组合数之间的关系 看一下数据范围,很明显要避免重复计算,而且查询的复杂度要非常小 一看n, m <= 1000 这明 ...

  3. 20121124.Nodejs异步式I/O与事件式编程

    异步: 你请人吃饭,准备一起去的.结果那人刚好有事,让你先去点菜,你去点好菜,他忙完就来了,这就是异步的优势(不耽误事!)同步: 就是,你必须等那个人忙完了,才一起去(浪费时间) 理解来源于群友&qu ...

  4. css3特效第一篇--旋转的背景&翻书效果

    一.html遮盖层与css3的旋转动画 >效果图(加载可能会慢一点儿,请稍等...): >实现思路:在一个大的div中装入一个底层img和顶层的div(里面的内容按照以上图片呈现的样式布局 ...

  5. 洛谷 2921 记忆化搜索 tarjan 基环外向树

    洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid=2921) 做这题的经历有点玄学,,起因是某个random题的同学突然 ...

  6. Shuttle ESB实现消息推送

    ESB全称Enterprise Service Bus,即企业服务总线.它是传统中间件技术与XML.Web服务等技术结合的产物. ESB的出现改变了传统的软件架构,能够提供比传统中间件产品更为便宜的解 ...

  7. cocos2d-x 中XML解析与数据存储

    一不小心就玩了一周的游戏了.哎.玩的时候时间过得总是这么快... 于是今天决定看一下之前不怎么非常熟悉的XML;(之前做游戏时数据的储存用到过XML,但这块是还有一个同事在做,所以不怎么熟悉), 看了 ...

  8. we标签

    功能: ·        辅助标签.配合其它标签使用,防止与标准html标签冲突 ·        别名为test 使用方法: <we [name=key]>[value]</we& ...

  9. php给图片加入文字水印

    PHP对图片的操作用到GD库.这里我们介绍怎样给图片加入文字水印. 大致分为四步: 1.打开图片 2.操作图片 3.输出图片 4.销毁图片 以下我们上代码来详细解说每步的实现过程: <? php ...

  10. 2015多校联合训练赛hdu 5301 Buildings 2015 Multi-University Training Contest 2 简单题

    Buildings Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...