题意:

在一个 n 维无限空间中,一开始原点处有一个细胞。细胞每秒都会增殖,每个原有细胞都会消亡,在与它曼哈顿距离恰为 1的所有位置都会新增一个细胞。求 T 秒后,原点处会有多少细胞,答案 mod1000000007。

共有Q组询问,每组询问给你n和T。Q ≤ 20000,n ≤ 100,T ≤ 200。

分析:

对于每次扩散,都会扩散到原细胞周围距离为1的一圈,由于最初每一个细胞都会从原点出发,我们可以考虑成原点的细胞的分身经过长途跋涉,每次可以朝着一个维度前进,也可以朝着一个维度后退,只要T秒后他可以回到原点,那么他对答案的贡献就加一。这样问题就等价于求有多少回到原点的长度为T的路径(从原点出发再回到原点看做一条路径)。

由于维度什么的实在是太抽象了,因此我们可以把每一维分开考虑,设 f[i][j] 表示用了i个维度,长度为2j的回到原点路径条数。设第i+1维走了2k步,那么在这2k步种,需要有k步向前走,k步向后走才能回到原点,方案数为C(k,2k)。此时走了2(j+k)步,对于这2(j+k)步,先走哪一步后走哪一步本质上是无所谓的,但是算作不同的方案,因此答案还要乘上C(2k,2(j+k)),这样就可以得到递推方程:

f[i+1][j+k]=f[i][j]C(k,2k)C(2k,2(j+k))

由于n,T都不大,所以可以预处理出f[i][j],O(1)回答每次询问。

代码:

#include<bits/stdc++.h>
using namespace std; typedef long long ll; const int mod=1e9+7; int Q,n,t; ll f[110][210],c[210][210]; void prework() { for(int i=0;i<=200;i++) c[i][0]=1; for(int i=1;i<=200;i++) for(int j=1;j<=200;j++) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod; f[0][0]=1; for(int i=0;i<=100;i++) for(int j=0;2*j<=200;j++) for(int k=0;2*(j+k)<=200;k++) { f[i+1][j+k]=(f[i+1][j+k]+(c[2*k][k]*c[2*(j+k)][2*k])%mod*f[i][j]%mod)%mod; } } int main() { prework(); cin>>Q; for(int i=1;i<=Q;i++){ cin>>n>>t; if(t&1==1)cout<<'0'<<endl; else cout<<f[n][t/2]<<endl; } return 0; }

转载于:https://www.cnblogs.com/nopartyfoucaodong/p/9374025.html

组合数学练习题(二)——Chemist相关推荐

  1. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  2. 计算机一级考试空格符号选择题,2018年9月计算机一级考试MSOffice练习题二

    出国留学网在这里为考生们整理了"2018年9月计算机一级考试MSOffice练习题",希望能帮到大家,想了解更多考试资讯,请关注小编的及时更新哦. 2018年9月计算机一级考试MS ...

  3. 下列选项html标记错误的是,网站美工设计师认证模拟练习题(二)

    网站美工设计师认证模拟练习题(二) 一.单选题 1.文本被做成超链接后,鼠标移到文本,光标会变成什么形状() A. 手形 B. 十字形 C. 向右的箭头 D. 没变化 2.下面关于超链接说法错误的是( ...

  4. 唯一区分联网计算机的标识,信息技术练习题二答案

    信息技术练习题二 一.选择题 1. 能唯一区分联网电脑的标识是:( B ) A.网址 B.IP地址 C.邮件地址 D.计算机名称 2. 在使用Windows98的过程中,如果鼠标出现故障,在不能使用鼠 ...

  5. python随机产生100个整数二进制_PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。...

    Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...

  6. 组合数学之二 —— 容斥原理及应用

    这会是一个大型连载blog 内容主要来自<组合数学>+博主的思考 容斥原理 之前在"组合数学一"中提到过容斥原理 我们在这里直接给出推论: 设Ai表示在集合S中拥有特征 ...

  7. VB程序设计练习题(二)

    文章目录 文章目录 前言 内容 一.编写程序,点击相应的按钮在图片框中输出相对应的图形. 二.界面如图所示.编写程序实现图片框输出图形 三.界面如图所示.编写程序实现图片框输出图形 四.界面如图所示. ...

  8. python让用户输入一个整数_PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。...

    Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...

  9. 财经法规税收征收管理法律制度练习题二

    二.多选题 1.注销税务登记的范围包括( ) A被吊销营业执照 B企业改变经济性质 C 因经营期限届满而自动解散 D企业改变主管税务机关 答案:ACD 解析:B应该办理变更税务登记 2.税务登记的种类 ...

最新文章

  1. 批量导出表数据到CSV文件
  2. ajax跨域请求问题总结
  3. Android之图片缓存管理
  4. 快速获取csv数量_【数量技术宅|数据爬虫系列分享】如何获取免费的数字货币历史数据...
  5. python3 xlrd包的用法
  6. Java学习笔记3.1.1 类与对象
  7. android 禁止屏幕放大缩小,禁止APP内Webview页面跟随系统缩放字号
  8. 【报告分享】2022金融科技趋势研究报告.pdf(附下载链接)
  9. 赛道对比测试高尔夫6/7 全面解析后悬架
  10. MySQL 5.6 关于登陆的初始化设置
  11. 编写一个油猴脚本,去除百度首页的广告卡片(亲测有效)
  12. C语言求解百钱买百鸡问题
  13. Zoj 3527 Shinryaku! Kero Musume (DP_章鱼图上的树形DP)
  14. 快速输入对号框(框中加对号或者对勾)的方法
  15. 程序员如何学习Hadoop大数据培训
  16. deepin系统屏幕闪烁问题解决
  17. 1、Debian-Pi-Aarch64 系统安装
  18. 美团外卖API接入(二)
  19. 程序员推荐的5种编程语言!
  20. ndarray数组的操作和运算

热门文章

  1. HTML5 Canvas 绘图
  2. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)...
  3. Flutter与JS的双向调用、Flutter中Widget与Html混合加载
  4. Mr.J-- jQuery学习笔记(二十九)--属性操作方法(获取属性判断)
  5. HashMap源码及原理
  6. tomcat和apache的区别
  7. 51ak带你看MYSQL5.7源码2:编译现有的代码
  8. 这是一个关于软件开发的博客。
  9. 在 IIS6 配置使用php的fastcgi模式
  10. [jQuery基础] jQuery案例 -- 新浪微博