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 – rem, em, px
参考: 掘金 – 如何更愉快地使用em -- 别说你懂CSS相对单位 绝对值 vs 相对值 px, cm, mm 这些是绝对值. rem, em 是相对值. 绝对值就是最终的尺寸. 相对值的意思是它不 ...
- Spring —— 集合注入
数组注入 List集合注入 set集合注入 Map集合注入 Properties集合注入
- CSP-J 2024游记
CSP-J 2024游记 题目难度 总体来说,这次考试题目对于我这个初一牲难度不高.前面的选择题出现了少量难题(格蕾码). 选择题 选择题出现了一个搞人心态的BYD题目--格蕾码.这道题我蒙的, 阅读 ...
- USB gadget驱动框架(五)
本节主要分析虚拟串口的tty设备的注册.创建/dev/ttyGSx设备节点.tty相关接口的实现. tty的申请与注册 源码:drivers/usb/gadget/function/u_serial. ...
- AtCoder Beginner Contest 371(ABCDE)
A 个人直接硬解,讨论情况也并不复杂 代码: #include<bits/stdc++.h> #define int long long using namespace std; cons ...
- KubeSphere 迈向新的里程碑 —— 10000 颗星星!
喜大普奔,开源项目 KubeSphere 于近期在 "云原生分布式操作系统" 的征程中迈入新的里程碑 -- GitHub Star 数量突破 10,000! 真心感谢每一位贡献者. ...
- 云原生爱好者周刊:在浏览器中运行 Linux 系统 | 2022-10-10
Confluent 官网已经放出了<Kafka 权威指南第二版:大规模实时数据和流处理>,相比于第一版新增了以下内容: Kafka 管理客户端概述: API 更新到最新的 Apache K ...
- AtCoder Beginner Contest 375 C题 (python解)
Panasonic Programming Contest 2024(AtCoder Beginner Contest 375)C - Spiral Rotation(python解)** 原题链接: ...
- 当多核变单核:破解CPU核心神秘失踪的终极指南!
CPU 核心与线程识别问题解决文档 1. 背景 在一台物理主机上运行 lscpu 命令时,发现系统仅识别到 1 个核心和 1 个线程,尽管主机搭载的是 Intel Xeon E5-2686 v4 处理 ...
- 全面解释人工智能LLM模型的真实工作原理(完结)
前一篇:<全面解释人工智能LLM模型的真实工作原理(三)> 序言: 本节作为整篇的收官之作,自然少不了与当今最先进的AI模型相呼应.这里我们将简单介绍全球首家推动人工智能生成人类语言的公司 ...