工大要建新教学楼了,一座很高很高的楼,它有n层。
学校为了减少排电梯的队伍,建造了好多好多电梯,共有m个。
为了让电梯有序,学校给每个电梯设定了独特的可停楼层,如 x1 x2 y1 y2 表示,x1楼层到x2楼层可停,y1楼层到y2楼层可停。然后其他楼层这个电梯都不停
一天,yanga11ang想去顶层观光,看到了如此多的电梯,不禁一阵眩晕,冒出疑问,如果只坐电梯,该如何去顶楼,有多少种方法可以去顶楼呢?
Ps:电梯只能向上,

Input

第一行一个整数t,表示t组样例,
接下来t组样例
每组样例 第一行两个数 n,m n小于100 ,m小于100
接下来m行 每行四个数 x1,x2,y1,y2 表示电梯停靠楼层 x1<x2<y1<y2

Output

每组样例输出一个整数 表示方法数 (结果对1e9+7取模)

Sample Input 1

2
5 2
1 1 3 3
2 3 5 5
5 1
1 1 2 5

Sample Output 1

1
8

Hint

note: 从一楼坐电梯直接到三楼,和坐这部电梯先到二楼下电梯再上这部电梯最终到达三楼,被考虑为是不同的方案

题目分析 : 有 m 个长度为 n 的电梯,不同电梯可以停靠的楼层不同,就是一个递推式的 dp, 首先比如对于第 3 层来学,总的方案数就是到第一层的方案数乘以 第一层到第三层的方案总数 + 第二层到第三层的方案数

代码示例 :

#define ll long long
const ll eps = 1e9+7; int n, m; int mp[105][105];
ll dp[105];
ll f[105]; int main() {
freopen("1.in", "r", stdin);
int t;
int x1, y1, x2, y2; cin >> t;
while(t--){
scanf("%d%d", &n, &m);
memset(mp, 0, sizeof(mp));
int sign = 0;
for(int i = 1; i <= m; i++){
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
for(int j = x1; j <= y1; j++){
mp[i][j] = 1;
if (j == 1) sign = 1;
}
for(int j = x2; j <= y2; j++){
mp[i][j] = 1;
if (j == 1) sign = 1;
}
}
memset(dp, 0, sizeof(dp));
if (sign) dp[1] = 1ll;
else {
printf("0\n");
continue;
} for(int i = 2; i <= n; i++){
for(int j = i-1; j >= 1; j--){
ll cnt = 0;
for(int k = 1; k <= m; k++){
if (mp[k][i] && mp[k][j]) cnt++;
}
dp[i] += ((dp[j]%eps)*(cnt%eps))%eps;
dp[i] %= eps;
}
}
printf("%lld\n", dp[n]%eps);
} return 0;
}

递推 dp的更多相关文章

  1. 递推DP URAL 1167 Bicolored Horses

    题目传送门 题意:k个马棚,n条马,黑马1, 白马0,每个马棚unhappy指数:黑马数*白马数,问最小的unhappy值是多少分析:dp[i][j] 表示第i个马棚放j只马的最小unhappy值,状 ...

  2. 递推DP URAL 1017 Staircases

    题目传送门 /* 题意:给n块砖头,问能组成多少个楼梯,楼梯至少两层,且每层至少一块砖头,层与层之间数目不能相等! 递推DP:dp[i][j] 表示总共i块砖头,最后一列的砖头数是j块的方案数 状态转 ...

  3. 递推DP URAL 1260 Nudnik Photographer

    题目传送门 /* 递推DP: dp[i] 表示放i的方案数,最后累加前n-2的数字的方案数 */ #include <cstdio> #include <algorithm> ...

  4. 递推DP URAL 1353 Milliard Vasya's Function

    题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...

  5. 递推DP URAL 1119 Metro

    题目传送门 /* 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 递推DP:仿照JayYe,处理的很巧妙,学习:) 好 ...

  6. 递推DP 赛码 1005 Game

    题目传送门 /* 递推DP:官方题解 令Fi,j代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜 转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩 ...

  7. 递推DP HDOJ 5328 Problem Killer

    题目传送门 /* 递推DP: 如果a, b, c是等差数列,且b, c, d是等差数列,那么a, b, c, d是等差数列,等比数列同理 判断ai-2, ai-1, ai是否是等差(比)数列,能在O( ...

  8. hdu1978(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 分析: 递推DP. dp[][]表示可以到达改点的方法数. 刚开始:外循环扫描所有点dp[x][ ...

  9. 递推DP URAL 1031 Railway Tickets

    题目传送门 /* 简单递推DP:读题烦!在区间内的都更新一遍,dp[]初始化INF 注意:s1与s2大小不一定,坑! 详细解释:http://blog.csdn.net/kk303/article/d ...

  10. 递推DP UVA 607 Scheduling Lectures

    题目传送门 题意:教授给学生上课,有n个主题,每个主题有ti时间,上课有两个限制:1. 每个主题只能在一节课内讲完,不能分开在多节课:2. 必须按主题顺序讲,不能打乱.一节课L时间,如果提前下课了,按 ...

随机推荐

  1. Intellij Idea更换主题

    <h1 class="title">Intellij Idea更换主题</h1> <!-- 作者区域 --> <div class=&qu ...

  2. linux 字符设备注册

    如我们提过的, 内核在内部使用类型 struct cdev 的结构来代表字符设备. 在内核调用你 的设备操作前, 你编写分配并注册一个或几个这些结构. [11] 11为此, 你的代码应当包含 < ...

  3. HDU 3974 Assign the task

    Assign the task Problem Description There is a company that has N employees(numbered from 1 to N),ev ...

  4. 开源项目使用 appveyor 自动构建

    我写了几个开源项目,我想要有小伙伴提交的时候自动运行单元测试,自动运行编译,这样可以保证小伙伴提交清真的代码 本文将会告诉大家如何接入 appveyor 自动构建方案,在 Github 上给自己的开源 ...

  5. MySQL面试(二)

    1.为什么索引遵循最左匹配原则? 当B+树的数据项是符合的数据结构,比如(name,age,sex)的时候,B+树是按照从左到右的顺序建立搜索树的.比如当(张三,20,F)这样的数据来检索的时候,b+ ...

  6. Tomcat 类加载器打破双亲委派模型

    我们分为4个部分来探讨: 1. 什么是类加载机制? 2. 什么是双亲委任模型? 3. 如何破坏双亲委任模型? 4. Tomcat 的类加载器是怎么设计的? 我想,在研究tomcat 类加载之前,我们复 ...

  7. HDU1166 敌兵布阵 BZOJ1012 最大数[树状数组]

    一.前置知识-树状数组 树状数组(binary indexed tree)是一种简洁的代码量很小的数据结构,能够高效的处理前缀区间上的问题.在很多情况下能写树状数组解决的就不用码半天线段树了. 树状数 ...

  8. 假期汇总表handler中涉及的基础知识

    1,stringBuffer 的常用方法,append () 方法, public StringBuffer append(boolean b) 追加内容到当前StringBuffer对象的末尾 ,我 ...

  9. 使用 postman 给 API 写测试

    使用 postman 给 API 写测试 Intro 上次我们简单介绍了 使用 postman 测试 API,这次主要来写一些测试用例以检查请求的响应是否符合我们的预期以及如何使用脚本测试 使用 po ...

  10. DEVOPS技术实践_03:Jenkins自动构建

    一.提交代码自动构建 当开发人员在gitlab提交代码后,会自动触发jenkin构建 点击项目---->点击diy_maven-TEST----->点击配置--->构建触发器---- ...