zoukankan      html  css  js  c++  java
  • JZOJ5384. 【NOIP2017提高A组模拟9.23】四维世界

    题目

    Description

    众所周知,我们常感受的世界是三维的。
    Polycarp突然对四维空间产生了兴趣,他想对四维空间进行一些研究。但是在此之前,他必须先对三维世界了解透彻。
    于是Polycarp决定从零维,也就是一个点,开始他的研究。
    我们把一个点放在三维空间中,Polycarp把这个点视为原点,并确定了三个正方向。
    他可以把这个点往三个方向之一拉伸一个单位,那么这个点就变为了一维的一条长度为一的线段。
    然后如果他把这条线段往另一方向拉伸一个单位,那么这条线就变为了二维的一个矩形。
    如果继续拉伸可能就会进入三维世界,也就是变为直四棱柱。
    Polycarp认为矩形、线段甚至点都可以看作某一维或某几维为丰的直四棱柱。
    现在Polycarp想演示把一个点一步一步拉伸为边长为n的正六面体的过程,
    但他缺失了m种形态的直四棱柱模具(Polycarp拥有其他的所有直四棱柱模具),他想知道共有多少种演示方案。
    Polycarp的演示过程需要每拉伸一个单位时对应形态的直四棱柱。因为方案数很大,所以输出答案对10^9+7的结果。

    Input

    从文件poly.in中读入数据。
    第一行两个整数n;m,分别表示直四棱柱的边长和他缺失的模具数量。
    接下来m行,第i行三个整数x; y; z,表示第i个缺失模具的长、宽、高。
    2 3
    1 0 1
    1 1 1
    0 2 0

    Output

    输出到文件poly.out中。一个整数,即答案。
    36

    Data Constraint

    题目大意

    求从 (0,0,0) 到 (n,n,n) 不经过某些点的方案数

    题解

    20 分

    暴力 DFS ,不经过一些点,搜到终点 +1
    复杂度:\(O(?)\)

    40 分

    设 F[i][j][k] 为从 (0,0,0) 到 (i,j,k) 的方案数,若不能走就标记一下,初始 F[0][0][0]=1
    复杂度:\(O(n^3)\)

    60 分

    若 m=0 求的是从 (0,0,0) 到 (n,n,n) 的方案数
    由于一共要走 3n 步,方案数为\(C^n_{3n}\bullet C^n_{2n}\bullet C^n_n=\dfrac{(3n)!(2n)!}{n!(2n)!n!n!}=\dfrac{(3n)!}{n!n!n!}\)

    100 分

    我们设 F[i] 为从 (0,0,0) 到第 i 个禁止点不经过其他禁止点的方案数,设第 i 个禁止点为 \((x_i,y_i,z_i)\)
    同 60 分做法,若经过禁止点的方案数为 \(\dfrac{(x_i+y_i+z_i)!}{x_i!y_i!z_i!}\) ,可先算出再减去经过禁止点的方案
    一个经过禁止点的方案肯定有其第一个经过的禁止点。设这个禁止点为 j 。
    那么 j 之前肯定不能经过其他禁止点,只有无论怎么走都行。可得

    \[F_i=\dfrac{(x_i+y_i+z_i)!}{x_i!y_i!z_i!}-\sum_{x_j\le x_i,y_j\le y_i,z_j\le z_i}\dfrac{(x_i-x_j+y_i-y_j+z_i-z_j)!}{(x_i-x_j)!(y_i-y_j)!(z_i-z_j)!} \]

    复杂度:\(O(m^2)\)

    注意
    1. 为了无后效性,请先排序(三关键字)
    2. 如何输出答案:加一个禁止点 (n,n,n) ,最后输出 F[m] ,即不经过所有障碍到 (n,n,n) 的方案
    3. 需要逆元,否则会炸 (OI-WIKI
  • 相关阅读:
    Ubuntu下用NdisWrapper安装网卡驱动
    Ubuntu下轻松切换GDM, LightDM , KDM
    Ubuntu常用软件推荐,图文详细说明及下载
    Matlab绘图-很详细,很全面
    安装sunvirtualbox
    Ubuntu下使用虚拟机安装Windows XP(sunvirtualbox)
    Ubuntu下安装vmware 9.0 + 注册码
    Linux如何用QQ?Linux下QQ使用的几种方案
    怎么解决 ubuntu 装kde桌面遇到的汉化问题
    Ubuntu下安装KDE及安装中文环境
  • 原文地址:https://www.cnblogs.com/KonjakLAF/p/14224136.html
Copyright © 2011-2022 走看看