車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子。一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中摆最多个数的車使其互不攻击的方案数。他经过思考,得出了答案。但他仍不满足,想增加一个条件:对于任何一个車A,如果有其他一个車B在它的上方(車B行号小于車A),那么車A必须在車B的右边(車A列号大于車B)。

现在要问问你,满足要求的方案数是多少。
Input
第一行一个正整数T,表示数据组数。

对于每组数据:一行,两个正整数N和M(N<=1000,M<=1000)。
Output
对于每组数据输出一行,代表方案数模1000000007(1e9+7)。
Sample Input
1
1 1
Sample Output
1

一个比较简单的DP,一开始以为是八皇后问题的变形,仔细看看不需要那么麻烦,题目里有两个点需要注意,一个是小度想要的是摆最多个数的方案,这里的最多个数并不是指能达到最大个数的方案,而是说能摆到最多不能再摆其他棋子的方案数,另外,增加的条件实际是简化了题目,下一行的棋子只能摆在上面最大列数的右边。

根据题意可以得到状态转移方程:dp[ i ] [ j ]=dp[i-1][j]+dp[i-1][j-1]。其中dp[i-1][j-1]表示的是上一行前一个格子的可能情况,这种时候表示在这个格子上放棋子,而dp[i-1][j-1]是不在这个格子上放旗子。

根据状态转移方程打表,最后输出结果即可。

AC代码

#include <iostream>
#include <cstring>
#define mod 1000000007
using namespace std;
int n,m;
int dp[1010][1010];
int T;
int main()
{for(int i=0; i<=1000; i++)dp[i][0]=1;for(int i=1; i<=1000; i++)for (int j=1; j<=i; j++)dp[i][j]=(dp[i-1][j]+dp[i-1][j-1])%mod;cin>>T;while (T--){cin>>n>>m;if(n>m)swap(n,m);cout<<dp[m][n]<<endl;}return 0;
}

Chess DP 思维题相关推荐

  1. Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维)

    Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维) time limit per tes ...

  2. Educational Codeforces Round 67 (Rated for Div. 2)(D思维题 线段树/E树形dp(换根dp) 二次扫描与换根法)

    心得 D写了个假算法被hack了wtcl- E据涛神说是二次扫描与换根法,看了看好像和树形dp差不多 F概率dp G费用流 回头再补 思路来源 马老师 归神 贤神等代码 http://www.mami ...

  3. yoyo思维题(困难) 组合数学

    问题 B: yoyo思维题(困难) 时间限制: 1 Sec  内存限制: 256 MB 提交: 11  解决: 3 [提交][状态][讨论版][命题人:qianyouyou][Edit] [TestD ...

  4. CodeForces - 1102A(思维题)

    https://vjudge.net/problem/2135388/origin Describe You are given an integer sequence 1,2,-,n. You ha ...

  5. CSP难度的经典题目/有趣的思维题选讲(一)

    引言 这里讲到的难题是一部分非常典型的题目,但并不是所有.因此这并非是一个全面的知识列表,而只适合提高组同学用来提升能力和拓展视野. 这篇文章在很多地方讲述的不够详细和严谨,因为它的作用并非是题解,而 ...

  6. codeforces 有意思的思维题 1 ~ 15

    codeforces 思维题 1.给定数组,求满足i < j and ai * aj = i + j的数对数量 2.第 i 步向前跳 i 步或后退 1 步 3.给两个点,求正方形的另两个点 4. ...

  7. little w and Soda(思维题)

    链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  8. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★

    昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...

  9. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

最新文章

  1. 程序员花名大 PK | 每日趣闻
  2. 从键盘输入4个学生的有关数据,然后把它们保存到磁盘文件中,最后从磁盘文件中读取数据输出到屏幕...
  3. Xcode_7_GM_seed.dmg下载
  4. VMware下桥接设置
  5. Python数据分析学习笔记
  6. 【STL】string的增删改查
  7. Linux下samba服务速度很慢的问题
  8. 【Linux网络编程】网络协议入门
  9. 考研失败了,该何去何从?
  10. OpenGL.Tutorial15_Lightmaps
  11. mysql 默认事务隔离级别_MySQL 事务隔离级别详解
  12. java词汇速查手册_java 词汇表速查手册
  13. JDK线程池CompletionService的使用
  14. 常用简单的sql语句
  15. linux之chsh命令
  16. 如何查看Mac系统的位数
  17. 使用Python生成数据
  18. Word域的应用和详解
  19. JS实现HTML实体与字符的相互转换(一)
  20. POI设置Excel单元格样式和背景色

热门文章

  1. AndroidUI高级之十六使用Intent进行通信
  2. 策略模式(headfirst设计模式学习笔记)
  3. mysql5.7 java读取乱码
  4. js解析xml字符串或xml文件,将其转换为xml对象方法
  5. JS判断日期是否在同一个星期内,和同一个月内
  6. 计算机办公应用总结,2017年办公自动化实习报告总结
  7. 邮件作为证据如何提交_电子邮件如何取证、举证?
  8. shell 免杀aspx_对于asp免杀webshell的一些总结
  9. Windows Server 2008 R2 Tomcat 开机自启动
  10. Quartz.NET的使用(附源码)