hdu----(4301)Divide Chocolate(状态打表)
多校综合排名前25名的学校请发送邮件到HDUACM@QQ.COM,告知转账信息(支付宝或者卡号)
Divide Chocolate
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1757 Accepted Submission(s): 827
Problem Description
It is well known that claire likes dessert very much, especially chocolate. But as a girl she also focuses on the intake of calories each day. To satisfy both of the two desires, claire makes a decision that each chocolate should be divided into several parts, and each time she will enjoy only one part of the chocolate. Obviously clever claire can easily accomplish the division, but she is curious about how many ways there are to divide the chocolate.
To simplify this problem, the chocolate can be seen as a rectangular contains n*2 grids (see above). And for a legal division plan, each part contains one or more grids that are connected. We say two grids are connected only if they share an edge with each other or they are both connected with a third grid that belongs to the same part. And please note, because of the amazing craft, each grid is different with others, so symmetrical division methods should be seen as different.
Input
First line of the input contains one integer indicates the number of test cases. For each case, there is a single line containing two integers n (1<=n<=1000) and k (1<=k<=2*n).n denotes the size of the chocolate and k denotes the number of parts claire wants to divide it into.
Output
For each case please print the answer (the number of different ways to divide the chocolate) module 100000007 in a single line.
Sample Input
2 2 1 5 2
Sample Output
1 45
Author
BUPT
Source
2012 Multi-University Training Contest 1
Recommend
给你一个2*n的矩阵分成k部分的数目求余....
思路:dp1[n][m]前N列分成M份,最后两个分开的情况数 (看到某位大牛的思路写的...)
dp2[n][m]前N列分成M份,最后两个在一起断情况
代码:
1 #include<iostream>
2 #include<cstring>
3 #include<cstdio>
4 using namespace std;
5 typedef long long LL;
6 const int maxn=2010;
7 const LL mod=100000007;
8 LL dp1[1003][maxn],dp2[1003][maxn];
9 int main()
10 {
11 memset(dp1,0,sizeof(dp1));
12 memset(dp2,0,sizeof(dp2));
13 dp1[1][1]=0;dp1[1][2]=1;
14 dp2[1][1]=1;dp2[1][2]=0;
15 for(int i=2;i<=1002;++i)
16 for(int j=1;j<=i+i;++j)
17 {
18 dp1[i][j]=dp1[i-1][j]+dp1[i-1][j-1]*2+dp2[i-1][j-1]*2;
19 if(j>2)
20 dp1[i][j]+=dp1[i-1][j-2]+dp2[i-1][j-2];
21 dp1[i][j]%=mod;
22 dp2[i][j]=dp1[i-1][j]*2+dp2[i-1][j]+dp1[i-1][j-1]+dp2[i-1][j-1];
23 dp2[i][j]%=mod;
24 }
25 int test;
26 scanf("%d",&test);
27 while(test--){
28 int a,b;
29 scanf("%d%d",&a,&b);
30 printf("%lldn",(dp1[a][b]+dp2[a][b])%mod);
31 }
32 return 0;
33 }
- 如何使用Cloudera Manager启用HDFS的HA
- 刷剧不忘学CNN:TF+Keras识别辛普森一家人物 | 教程+代码+数据集
- 深度学习中的基础线代知识-初学者指南
- 如何通过CM升级Kafka0.11及Spark2.2
- MyEtherWallet 手动添加币乎代币(KEY)
- 玩转TensorFlow深度学习
- 如何在CDH实现HDFS透明加密
- 漏洞分析】Shiro RememberMe 1.2.4 反序列化导致的命令执行漏洞
- 机器学习算法再比较
- 区块链钱包开发
- 加密货币常见加密算法
- 如何给Kerberos环境下的CDH集群添加Gateway节点
- Spring Security OAuth RCE (CVE-2016-4977) 漏洞分析
- 高通量测序如何寻找T-DNA插入的位置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 中 onSaveInstanceState()使用方法详解
- Linux修改主机名的简单方法
- Android RecycleView使用(CheckBox全选、反选、单选)
- Android自定义滑动解锁控件使用详解
- linux nc命令小结
- Android如何自定义EditText光标与下划线颜色详解
- 基于Centos7 部署Varnish缓存代理服务器
- Android getActivity()为空的问题解决办法
- Android Notification使用方法总结
- Linux下redis的持久化、主从同步与哨兵详解
- 详解Android(共享元素)转场动画开发实践
- Android自定义View中attrs.xml的实例详解
- Android开发之缓冲dialog对话框创建、使用与封装操作
- Windows 10 下安装 Apache 2.4.41的教程
- Android基础教程数据存储之文件存储