ZCMU-1051


比较来说不太难其实,当然找到一定的公式这与前面的1033相识,都会用到f(i,j)=f(i-1,j)+f(i-1,j-1)
我们可以先从小部分看出来,一层可以整体或者两部分,在面对第i层看前面i-1层中分成j-1分和j分,但是又因为自己可以分成分开与不分开所以要用到三维数组,分别放置不分开与分开
我觉得比较难的点在于讨论i-1层与i层相连接的就是f(i,j)=g(f(i-1,j),f(i-1,j-1)),后面还要讨论一下j-2;对这样问题可以画出i-1的情况,与i层其余不看。以小看大。
#include<stdio.h>
#define mod 100000007
int dp[1002][2002][2]={0};
//对i列分成j部分的数组表示操作
//dp这类问题表示i中找j;
void init(){
int i,j,k;
//其中又可以分成两部分,当前要不要分开
dp[1][1][0]=1;
dp[1][2][1]=1;
//一行下分开后只能是2;
for(i=2;i<1002;i++){
dp[i][1][0]=1;
//一个整体
//因为分个数且每层两份,且题目也告诉了要2*n
for(j=2;j<2002;j++){
dp[i][j][0] += dp[i-1][j][0];
dp[i][j][0] %= mod;
//表示在前面已经分号j分
dp[i][j][0] += dp[i-1][j-1][0];
dp[i][j][0] %= mod;
//分好j-1分,加上自己
dp[i][j][0] += 2*dp[i-1][j][1];
dp[i][j][0] %= mod;
//因为当前没分成两份,前一行分成两个,所以
//i行怼上去后要乘以2;
dp[i][j][0] += dp[i-1][j-1][1];
dp[i][j][0] %= mod;
//虽然分成两行但只是j-1分
dp[i][j][1] += 2*dp[i-1][j-1][0];
dp[i][j][1] %= mod;
//当前分开不同怼上去
dp[i][j][1] += 2*dp[i-1][j-1][1];
dp[i][j][1] %= mod;
//一个怼(因为前面只有j-1)
dp[i][j][1] += dp[i-1][j][1];
dp[i][j][1] %= mod;
//因为要相对不会出现交叉
dp[i][j][1] += dp[i-1][j-2][0];
dp[i][j][1] %= mod;
//自己提供两种
dp[i][j][1] += dp[i-1][j-2][1];
dp[i][j][1] %= mod;
}
}
}
int main(){
int k,n,t;
scanf("%d",&t);
init();
while(t--){
scanf("%d%d",&n,&k);
printf("%d\n",(dp[n][k][0]+dp[n][k][1])%mod);
}
return 0;
}
ZCMU-1051的更多相关文章
- HDOJ 1051. Wooden Sticks 贪心 结构体排序
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 1051. Pop Sequence
原题连接:https://www.patest.cn/contests/pat-a-practise/1051 题目: Given a stack which can keep M numbers a ...
- BZOJ 1051 最受欢迎的牛 解题报告
题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4438 Solved: 2353[S ...
- AC日记——接龙游戏 codevs 1051
1051 接龙游戏 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 给出了N个单词,已经按长度排好了序.如果 ...
- codevs 1051 接龙游戏
codevs 1051 接龙游戏 http://codevs.cn/problem/1051/ 题目描述 Description 给出了N个单词,已经按长度排好了序.如果某单词i是某单词j的前缀,i- ...
- BZOJ 1051: [HAOI2006]受欢迎的牛
Description 一个有向图,求所以能被别的点到达的点的个数. Sol Tarjan + 强连通分量 + 缩点. 缩点以后找强连通分量,缩点,然后当图有且仅有1个出度为1的点时,有答案. Cod ...
- 51nod 1051 求最大子矩阵和
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1051 1051 最大子矩阵和 基准时间限制:2 秒 空间限制: ...
- BZOJ 1051 & 强联通分量
题意: 怎么说呢...这种题目有点概括不来....还是到原题面上看好了... SOL: 求出强联通分量然后根据分量重构图,如果只有一个点没有出边那么就输出这个点中点的数目. 对就是这样. 哦还有论边双 ...
- 51nod 1051 最大子矩阵和(dp)
题目链接:51nod 1051 最大子矩阵和 实质是把最大子段和扩展到二维.读题注意m,n... #include<cstdio> #include<cstring> #inc ...
- [codevs 1051]接龙游戏(栈)
题目:http://codevs.cn/problem/1051/ 分析: 当然单词查找树是可以的,但这题有更为简便的方法.可以先按字典序排序,然后弄一个栈,如果当前字串可以接到栈顶元素的后面,那么当 ...
随机推荐
- CSS & JS Effect – Section Design Waves
介绍 Section Waves 长这样 左边是没有 waves, 右边是加了 waves. 它的作用就是点缀. 让画面有一点 "Design" 的感觉. 参考 You ...
- RxJS 系列 – Filtering Operators
前言 介绍完 RxJS 两大概念 Observable 和 Subject 之后, 篇幅最大的就是各种 Operators 了. 这篇先介绍比较简单的 Filter Operators. 请先看完上面 ...
- ASP.NET Core – Minimal API
介绍 Minimal API 是 .NET 6 才开始有的功能. 它是一个简化版本的 Web API. 我还没有认真的去学习它, 感觉它走的是 Node.js Express 的路线. 目前用它来写小 ...
- 【赵渝强老师】什么是Redis Cluster
(一)什么是Redis Cluster? Redis Cluster是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求.当遇到单机内存.并发.流量等 ...
- 【ZZ】Linux 安装 edge 浏览器
For Debain/Ubuntu/Deepin etc.## Setupcurl https://packages.microsoft.com/keys/microsoft.asc | gpg -- ...
- Linux内核虚拟内存管理之匿名映射缺页异常分析
今天我们就来讨论下这种缺页异常,让大家彻底理解它.注:本文使用linux-5.0内核源代码.文章分为以下几节内容: 匿名映射缺页异常的触发情况 0页是什么?为什么使用0页? 源代码分析 3.1 触发条 ...
- 使用SourceTree管理仓库代码
1.首先我们需要下载sourcetree,你可以去官网下载自己需要的版本. 2.安装完毕之后,我们需要获取ssh密钥与github关联上才能使用 按下面的操作开始执行.确定之后,会出现一个字符界面,输 ...
- Vue 的最大优势是???
Vue 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当与现代 ...
- mysql外联数据库
- Mongo oplog理解
转载请注明出处: oplog(操作日志)是MongoDB中用于记录所有写操作的日志.它是一个特殊的集合,存储在副本集的主节点中.oplog用于确保副本集中的副节点与主节点的数据保持一致.当主节点执行写 ...