hdu 4301(基本dp)
题意:就是给你一块2*n的巧克力,让你把它分成x块,并且每一个单位的巧克力各不相同,问有多少种分法?
分析:用dp[i][j][k],表示到巧克力的第二列时,巧克力被分成了j快,k用来表示第i列上下两块是分开的还是在一起的,在纸上把所有的情况画一下,于是就得到状态方程:
dp[i][j][0]=(dp[i-1][j][1]*2+dp[i-1][j][0]+dp[i-1][j-1][0]+dp[i-1][j-1][1])%mod;
dp[i][j][1]=(dp[i-1][j][1]+dp[i-1][j-1][0]*2+dp[i-1][j-1][1]*2+dp[i][j][1]+dp[i-1][j-2][0]+dp[i-1][j-2][1])%mod;
代码实现:
#include<stdio.h>
#include<string.h>
#include<math.h> #define mod 100000007 int dp[][][]; void init()
{
int i,j;
memset(dp,,sizeof(dp));
dp[][][]=;
dp[][][]=; for(i=;i<=;i++)
for(j=;j<=;j++)
{
if(dp[i][j][]==)
dp[i][j][]=(dp[i-][j][]*+dp[i-][j][]+dp[i-][j-][]+dp[i-][j-][])%mod; if(dp[i][j][]==)
{
dp[i][j][]=(dp[i-][j][]+dp[i-][j-][]*+dp[i-][j-][]*)%mod; if(j->=)
{
dp[i][j][]=(dp[i][j][]+dp[i-][j-][]+dp[i-][j-][])%mod;
}
}
}
} int main()
{
init(); int T,n,m; scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
printf("%d\n",(dp[n][m][]+dp[n][m][])%mod);
}
return ;
}
hdu 4301(基本dp)的更多相关文章
- hdu 4123 树形DP+RMQ
http://acm.hdu.edu.cn/showproblem.php? pid=4123 Problem Description Bob wants to hold a race to enco ...
- hdu 4507 数位dp(求和,求平方和)
http://acm.hdu.edu.cn/showproblem.php?pid=4507 Problem Description 单身! 依旧单身! 吉哥依旧单身! DS级码农吉哥依旧单身! 所以 ...
- hdu 3709 数字dp(小思)
http://acm.hdu.edu.cn/showproblem.php?pid=3709 Problem Description A balanced number is a non-negati ...
- hdu 4352 数位dp + 状态压缩
XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 4283 区间dp
You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化
HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的 ...
- HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)
HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化) 题意分析 先把每种硬币按照二进制拆分好,然后做01背包即可.需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数 ...
- HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化)
HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化) 题意分析 给出一系列的石头的数量,然后问石头能否被平分成为价值相等的2份.首先可以确定的是如果石头的价值总和为奇数的话,那 ...
- HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)
HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包) 题意分析 与普通的完全背包大同小异,区别就在于多了一个个数限制,那么在普通的完全背包的基础上,增加一维,表示个数.同时for循环 ...
随机推荐
- iOS & Mac 调试命令(VMMap&Top)
vmmap & top命令解析内存 Is there any way to query the address space of a process on Mac? On Windows, w ...
- 298. Binary Tree Longest Consecutive Sequence
题目: Given a binary tree, find the length of the longest consecutive sequence path. The path refers t ...
- 共有19款Java 文件上传组件开源软件
http://www.oschina.net/project/tag/139/fileupload?lang=19&sort=view
- jquery ajax json简单的分页,模拟数据,没有封装,只显示原理
简单的分页,模拟数据,没有封装,显示原理,大家有兴趣可以自己封装,这里只是个原理过程,真正的分页也差不多是这个原理,只是请求数据不太一样,html部分: <!TOCTYPE HTML> & ...
- c# 计算1-100之间的所有质数(素数)的和
求1-100之间的所有质数(素数)的和: 所以先必须知道什么是质数? 一个数是不是素数 “素数”是指除了能被1和自身整除外,不能被任何其它整数整除的自然数. 然后知道有哪些是质数: 记忆的方法: ...
- javascript 高效按字节截取字符串
做为一个前端开发人员在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,各种坑. 让后台程序截一下,又各种推托,让后台按字节截一下更是和要了后台老命一样,最后可能只会安字 ...
- echo "hello" | nc -4t -w1 localhost 8001
TCP4: echo "hello" | nc -4t -w1 localhost 8001 UDP4: echo "hello" | nc -4u -w1 l ...
- 《c程序设计语言》读书笔记--统计字符数
#include <stdio.h> #define MAXLINE 1000 int getline(char line[],int maxline); void copy(char t ...
- NDK(5) Android JNI官方综合教程[JavaVM and JNIEnv,Threads ,jclass, jmethodID, and jfieldID,UTF-8 and UTF-16 Strings,Exceptions,Native Libraries等等]
JNI Tips In this document JavaVM and JNIEnv Threads jclass, jmethodID, and jfieldID Local and Global ...
- Hopfield模型
1982年,J.Hopfield提出了可用作联想存储器的互连网络,这个网络称为Hopfield网络模型,也称Hopfield模型.Hopfield神经网络模型是一种循环神经网络,从输出到输入有反馈连接 ...