Chess DP 思维题
車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子。一天,小度在棋盘上摆起了许多車……他想知道,在一共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 思维题相关推荐
- 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 ...
- Educational Codeforces Round 67 (Rated for Div. 2)(D思维题 线段树/E树形dp(换根dp) 二次扫描与换根法)
心得 D写了个假算法被hack了wtcl- E据涛神说是二次扫描与换根法,看了看好像和树形dp差不多 F概率dp G费用流 回头再补 思路来源 马老师 归神 贤神等代码 http://www.mami ...
- yoyo思维题(困难) 组合数学
问题 B: yoyo思维题(困难) 时间限制: 1 Sec 内存限制: 256 MB 提交: 11 解决: 3 [提交][状态][讨论版][命题人:qianyouyou][Edit] [TestD ...
- CodeForces - 1102A(思维题)
https://vjudge.net/problem/2135388/origin Describe You are given an integer sequence 1,2,-,n. You ha ...
- CSP难度的经典题目/有趣的思维题选讲(一)
引言 这里讲到的难题是一部分非常典型的题目,但并不是所有.因此这并非是一个全面的知识列表,而只适合提高组同学用来提升能力和拓展视野. 这篇文章在很多地方讲述的不够详细和严谨,因为它的作用并非是题解,而 ...
- codeforces 有意思的思维题 1 ~ 15
codeforces 思维题 1.给定数组,求满足i < j and ai * aj = i + j的数对数量 2.第 i 步向前跳 i 步或后退 1 步 3.给两个点,求正方形的另两个点 4. ...
- little w and Soda(思维题)
链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 【每日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 ...
- ZOJ 3829 贪心 思维题
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...
最新文章
- 程序员花名大 PK | 每日趣闻
- 从键盘输入4个学生的有关数据,然后把它们保存到磁盘文件中,最后从磁盘文件中读取数据输出到屏幕...
- Xcode_7_GM_seed.dmg下载
- VMware下桥接设置
- Python数据分析学习笔记
- 【STL】string的增删改查
- Linux下samba服务速度很慢的问题
- 【Linux网络编程】网络协议入门
- 考研失败了,该何去何从?
- OpenGL.Tutorial15_Lightmaps
- mysql 默认事务隔离级别_MySQL 事务隔离级别详解
- java词汇速查手册_java 词汇表速查手册
- JDK线程池CompletionService的使用
- 常用简单的sql语句
- linux之chsh命令
- 如何查看Mac系统的位数
- 使用Python生成数据
- Word域的应用和详解
- JS实现HTML实体与字符的相互转换(一)
- POI设置Excel单元格样式和背景色