JZOJ【NOIP2013模拟联考14】隐藏指令

题目

Description

在d维欧几里得空间中,指令是一个长度为2N的串。串的每一个元素为d个正交基的方向及反方向之一。例如,d = 1时(数轴),串的每一个元素为左或右;d = 2时(平面),串的元素为上下左右之一;d = 3时(空间),串的元素为上下左右前后之一;d≥4时同理。

从起点出发,结月缘按照顺序一个一个的执行指令S中的元素,对于每个元素,结月往该方向行走1步。图2是一个例子,d = 2, S =→↓↑→→↓→→,|S|=2N=8。



我们认为,指令S是能够变得幸福的,当且仅当结月执行完该指令S后能够回到出发点。

请计算有多少种不同的指令S是能够变得幸福的,并输出其mod 1 000 000 007的值。两个指令被认为不同当且仅当存在一个位置,两个串在该处的元素不同。

Input

输入仅一行,两个用空格分开的非负整数d,N。

Output

输出仅一行,仅一个整数表示能够变得幸福的指令数mod 1 000 000 007。

Sample Input

输入1:

2 0

输入2:

2 1

输入3:

2 2

输入4:

3 1

输入5:

3 2

Sample Output

输出1:

1

【样例1说明】

空指令是能够变得幸福的。

输出2:

4

【样例2说明】

S1 =←→, S2 =→← , S3 =↑↓, S4 =↓↑

输出3:

36

【样例3说明】

如果结月缘只在一个维度上运动,也就是指令中横与纵的方向不同时出现,那么可能的情况有12种。如果结月缘在两个维度上都有运动,也就是指令中左右上下同时出现,那么有4! = 24种情况。相加后除以1 000 000 007取余数即可得到答案36。

输出4:

6

【样例4说明】

结月只能在三个维度之中一个运动,每个维度对应两种可能的能够变得幸福的隐藏指令。故总计3*2=6。

输出5:

90

Data Constraint

题解

题意

有一个\(d\)维空间,同时有一个长度为\(2n\)的操作序列,每个操作往某一维的正方向或反方向走一格,问多少种方案使得最后走回原点,对\(1e9+7\)取模

题解

5%

\(n=0\)时答案是1

期望得分5

30%

\(d=1\)时答案是\(C_{2n}^n\)

因为只有正方向和反方向各占一半才能走回原点

综上,期望得分30

60%

\(d=2\)时答案是\((C_{2n}^n)^2\)

证明如下



综上,期望得分60

75%

\(d=3\)时答案为

\(\sum_{i=0}^n\sum_{j=0}^{n-i}C_{2n}^{2i}C_{2n-2i}^{2j}C_{2i}^iC_{2j}^jC_{2n-2i-2j}^{n-i-j}\)

证明同\(d=2\)

综上,期望得分75

100%

考虑\(dp\)

设\(f[i][j]\)表示当前到了第\(i\)维,放了\(j\)对正反方向

转移

\(f[i][j]=\sum_{k=0}^jf[i-1][j-k]*C_{2j}^{2k}*C_{2k}^k\)

\(k\)表示当前这一维要放几对正反

预处理组合数即可

Code

#include<cstdio>
#include<cstring>
#define mod 1000000007
using namespace std;
int n,d,t[401];
long long s,now,g[401][401],f[401][401];
int main()
{
scanf("%d%d",&d,&n);
if (n==0)
{
printf("1\n");
return 0;
}
g[0][0]=1;
for (int i=1;i<=2*n;++i)
for (int j=0;j<=i;++j)
g[i][j]=(g[i-1][j-1]+g[i-1][j])%mod;
f[0][0]=1;
for (int i=1;i<=d;++i)
for (int j=0;j<=n;++j)
for (int k=0;k<=j;++k)
f[i][j]=(f[i][j]+((f[i-1][j-k]*g[2*j][2*k]%mod)*g[2*k][k]%mod))%mod;
printf("%lld\n",f[d][n]);
return 0;
}

JZOJ【NOIP2013模拟联考14】隐藏指令的更多相关文章

  1. JZOJ 3493. 【NOIP2013模拟联考13】三角形

    3493. [NOIP2013模拟联考13]三角形(triangle) (File IO): input:triangle.in output:triangle.out Time Limits: 10 ...

  2. JZOJ 3487. 【NOIP2013模拟联考11】剑与魔法(dragons)

    3487. [NOIP2013模拟联考11]剑与魔法(dragons) (Standard IO) Time Limits: 1000 ms  Memory Limits: 131072 KB  De ...

  3. JZOJ 3470. 【NOIP2013模拟联考8】最短路(path)

    470. [NOIP2013模拟联考8]最短路(path) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed ...

  4. JZOJ 3463. 【NOIP2013模拟联考5】军训

    3463. [NOIP2013模拟联考5]军训(training) (Standard IO) Time Limits: 2000 ms  Memory Limits: 262144 KB  Deta ...

  5. JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)

    3462. [NOIP2013模拟联考5]休息(rest) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed ...

  6. JZOJ 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela)

    3461. [NOIP2013模拟联考5]小麦亩产一千八(kela) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Det ...

  7. 【NOIP2013模拟联考7】OSU

    [NOIP2013模拟联考7]OSU 描述 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分, ...

  8. [jzoj]3468.【NOIP2013模拟联考7】OSU!(osu)

    Link https://jzoj.net/senior/#main/show/3468 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: ...

  9. [jzoj]3456.【NOIP2013模拟联考3】恭介的法则(rule)

    Link https://jzoj.net/senior/#main/show/3456 Description 终于,在众亲们的奋斗下,最终boss 恭介被关进了库特设计的密室.正当她们松了一口气时 ...

随机推荐

  1. C语言100题集合005-删除一维数组中所有相同的数,使之只剩一个

    系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...

  2. iNeuOS工业互联平台,WEB组态(iNeuView)增加工程视图导入、导出功能,及优化和修复,发布:v3.2.1版本

    目       录 1.      概述... 2 2.      平台演示... 2 3.      导出组态工程文件... 2 4.      导入组态工程文件... 3  1.   概述 iNe ...

  3. 数组和list 相互转换中遇到的坑

    代码示例: public class ArrayDemo { public static void main(String[] args) { Integer[] arr = {1, 2, 3, 4, ...

  4. 经典c程序100例==91--100

    [程序91] 题目:时间函数举例1 1.程序分析: 2.程序源代码: #include "stdio.h" #include "time.h" void mai ...

  5. <摘自>飞:jxl简析2 [ http://www.emlog.net/fei ]

    [<摘自>飞:jxl简析:http://www.emlog.net/fei] (二)应用 在进行实践前 , 我们需要对 excel 有一个大致的了解 ,excel 文件由一个工作簿 (Wo ...

  6. [MIT6.006] 4. Heaps and Heap Sort 堆,堆排序

    第4节课仍然是讲排序,但介绍的是一种很高效的堆排序. 在编程过程中,有时候会需要进行extrat_max的操作,即从一个数列里挨个抽取最大值并将其它从原数列中移除.而排序问题也可以看作是一个extra ...

  7. startup乱码解决方法

    1.用记事本方式打开:‪apache-tomcat-8.5.59\conf\logging.properties 2.使用快捷键(Ctrl+H)把UTF-8全部替换为:GBK,进行保存(Ctrl+s) ...

  8. 使用KepServerEx进行数据模拟

    KepServerEx是一款在工业控制中比较常见的数据采集服务软件之一,提供了多种类型的驱动,具有比较广泛的适用性.很多厂商和个人都会选择用它来做OPCServer.在项目的实施或测试过程中,我们有时 ...

  9. linux的别名(alias/unalias)

    linux中有别名时先找的别名后找命令文件 临时创建是直接用alias. [root@localhost ~]# alias ls=pwd [root@localhost ~]# ls /root 其 ...

  10. Python_异常处理、调试

    1.try except 机制 # 错误处理 # 一般程序都要用到错误捕获,当没有加且有错误的时候Python解释器会执行错误捕获,且是一层层向上捕获[所以问题点会在最下面] try: print(' ...