开始时设的是第一、二行前i,j列有k种的方法数,但是,这根本转移不了--!

难点在于1,2行的讨论啊。。。

设f[i][j][0]为前i列分成j个部分,且第i列的两个为同一部分的方法数.

f[i][j][1]为前i列分成j个部分,且第i列的两个为不同部分的方法数。

于是,很容易就会转到递推方程 了。

f[i+1][j][0]=f[i+1][j][0]+f[i][j][0]+f[i][j][1]*2

f[i+1][j][1]=f[i+1][j][1]+f[i][j][1]

f[i+1][j+1][0]=f[i+1][j+1][0]+f[i][j][0]+f[i][j][1]

f[i+1][j+1][1]=f[i+1][j+1][1]+f[i][j][0]*2+f[i][j][1]*2

f[i+1][j+2][1]=f[i+1][j+2][1]+f[i][j][0]+f[i][j][1]

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MOD 100000007
using namespace std; int dp[2][2002][2]; int main(){
int n,k,T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&k);
int pt=1;
memset(dp[1],0,sizeof(dp[1]));
dp[1][1][0]=dp[1][2][1]=1;
for(int i=2;i<=n;i++){
memset(dp[i&1],0,sizeof(dp[i&1]));
for(int p=1;p<=k;p++){
dp[i&1][p][0]=(dp[i&1][p][0]+dp[(i-1)&1][p][0]+dp[(i-1)&1][p][1]*2)%MOD;
dp[i&1][p][1]=(dp[i&1][p][1]+dp[(i-1)&1][p][1])%MOD;
if(p-1>0){
dp[i&1][p][0]=(dp[i&1][p][0]+dp[(i-1)&1][p-1][0]+dp[(i-1)&1][p-1][1])%MOD;
dp[i&1][p][1]=(dp[i&1][p][1]+dp[(i-1)&1][p-1][0]*2+dp[(i-1)&1][p-1][1]*2)%MOD;
}
if(p-2>0){
dp[i&1][p][1]=(dp[i&1][p][1]+dp[(i-1)&1][p-2][0]+dp[(i-1)&1][p-2][1])%MOD;
}
}
}
int ans=0;
ans=(ans+dp[n&1][k][0]+dp[n&1][k][1])%MOD;
printf("%d\n",ans);
}
return 0;
}

  

HDU 4301 Contest 1的更多相关文章

  1. HDU 4301 Divide Chocolate(DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4301 题意: 有一块n*2大小的巧克力,现在某人要将这巧克力分成k个部分,每个部分大小随意,问有多少种分法. 思 ...

  2. HDU 5045 Contest(状压DP)

    Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...

  3. hdu - 5045 - Contest(国家压缩dp)

    意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...

  4. [ACM] hdu 5045 Contest (减少国家Dp)

    Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...

  5. HDU 4301 Divide Chocolate (DP + 递推)

    Divide Chocolate Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. HDU–5988-Coding Contest(最小费用最大流变形)

    Coding Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  7. hdu 4301(基本dp)

    题意:就是给你一块2*n的巧克力,让你把它分成x块,并且每一个单位的巧克力各不相同,问有多少种分法? 分析:用dp[i][j][k],表示到巧克力的第二列时,巧克力被分成了j快,k用来表示第i列上下两 ...

  8. hdu 5045 Contest(状态压缩DP)

    题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...

  9. HDU 5045 Contest

    pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...

随机推荐

  1. 设置编码格式为utf8

    response.setCharacterEncoding("UTF-8"); 在Servlet2.3中是不行的,至少要2.4版本才可以,如果低于2.4版本,可以用如下办法: re ...

  2. 不可靠信号SIGCHLD丢失的问题

    如果采用 void sig_chld(int signo) {        pid_t pid;        int stat;                while((pid = waitp ...

  3. git-osc自己定义控件之:CircleImageView

    git-osc自己定义控件之:CircleImageView 一.CircleImageView的使用 在项目中能够发现,用户的头像都是圆形的.感觉非常好奇,昨天最终发现了,原来是自定了一个Image ...

  4. 【C++ Primer每日刷】之三 标准库 string 类型

    标准库 string 类型 string 类型支持长度可变的字符串.C++ 标准库将负责管理与存储字符相关的内存,以及提供各种实用的操作.标准库string 类型的目的就是满足对字符串的一般应用. 与 ...

  5. kettle 使用excel模板导出数据

    通过excel进行高速开发报表: 建设思路: 1.首先制订相关的execl模板. 2.通过etl工具(kettle)能够高速的 将数据库中的数据按excel模板导出成新的excel就可以. 当中ket ...

  6. 痛苦的人生——JRuby on Rails的开发与部署小记

    最近单位领导部署了一项开发用户自助服务系统的任务,该任务有且仅有我一人独立完成——哈哈,十分美妙的工作呢. 恰巧楼主最近被Ruby的美妙特性所迷惑,于是义无反顾地投入到Ruby on Rails的怀抱 ...

  7. SAM学习笔记

    SAM学习笔记 后缀自动机(模板)NSUBSTR(Caioj1471 || SPOJ 8222) [题意] 给出一个字符串S(S<=250000),令F(x)表示S的所有长度为x的子串中,出现次 ...

  8. tomcat映射路径(应用程序基本目录)的配置方法

    tomcat映射路径的配置方法 一.默认配置 位置:/conf 文件夹里的server.xml文件 <Host appBase="webapps"> appBase:可 ...

  9. SQL Server 日常维护--查询当前正在执行的语句、死锁、堵塞

    查询当前正在执行的语句: SELECT der.[session_id],der.[blocking_session_id], sp.lastwaittype,sp.hostname,sp.progr ...

  10. Java 系列之Filter(一)

    一.过滤器 过滤器就是在源数据和目的数据之间起过滤作用的中间组件.它可以截取客户端和资源之间的请求和响应信息,并且对这些信息进行过滤. 二.应用场景 1.对用户请求进行统一认证 2.对用户的访问请求进 ...