题目

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

JZOJ5384. 【NOIP2017提高A组模拟9.23】四维世界的更多相关文章

  1. JZOJ 100029. 【NOIP2017提高A组模拟7.8】陪审团

    100029. [NOIP2017提高A组模拟7.8]陪审团 Time Limits: 1000 ms  Memory Limits: 131072 KB  Detailed Limits   Got ...

  2. JZOJ 4732. 【NOIP2016提高A组模拟8.23】函数

    4732. [NOIP2016提高A组模拟8.23]函数 (Standard IO) Time Limits: 1500 ms  Memory Limits: 262144 KB  Detailed ...

  3. JZOJ 5328. 【NOIP2017提高A组模拟8.22】世界线

    5328. [NOIP2017提高A组模拟8.22]世界线 (File IO): input:worldline.in output:worldline.out Time Limits: 1500 m ...

  4. JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器

    5329. [NOIP2017提高A组模拟8.22]时间机器 (File IO): input:machine.in output:machine.out Time Limits: 2000 ms M ...

  5. JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)

    5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...

  6. JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)

    5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...

  7. JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)

    5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...

  8. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人

    [NOIP2017提高A组模拟9.17]信仰是为了虚无之人 Description Input Output Sample Input 3 3 0 1 1 7 1 1 6 1 3 2 Sample O ...

  9. 【NOIP2017提高A组模拟9.17】猫

    [NOIP2017提高A组模拟9.17]猫 题目 Description 信息组最近猫成灾了! 隔壁物理组也拿猫没办法. 信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数) ...

随机推荐

  1. YOLO系列梳理(一)YOLOv1-YOLOv3

    ​ 前言 本文是YOLO系列专栏的第一篇,该专栏将会介绍YOLO系列文章的算法原理.代码解析.模型部署等一系列内容.本文系公众号读者投稿,欢迎想写任何系列文章的读者给我们投稿,共同打造一个计算机视觉技 ...

  2. 帝国cms插件 解决后台修改信息时内容关键字不替换的问题

    很多站长是不是发现了帝国cms增加信息时,是有关键词替换的,这样是有利于网站优化排名. 但是在后台格式化数据之后,再去进行修改之后,对不起,内容关键字就实效了. 针对这一问题,解决方案如下: 找到 / ...

  3. 使用ABP SignalR重构消息服务(二)

    使用ABP SignalR重构消息服务(二) 上篇使用ABP SignalR重构消息服务(一)主要讲的是SignalR的基础知识和前端如何使用SignalR,这段时间也是落实方案设计.这篇我主要讲解S ...

  4. Oracle双字段约束

    Oracle里有unique约束,意思是该字段唯一. 但如果是两个字段呢? 比如说一个会员等级表 ID NAME POINT DISCOUNT PRIVILEGE MID 1019 普通会员 0 10 ...

  5. 从电路到UI系列之一——常见显示控制接口的认识

    引入 我之前有两方面的使用屏幕的案例.在做的模块上需要用到屏幕来显示的时候,全是SPI屏幕,并口屏幕和IIC屏幕.在研究了驱动(或者是绘图函数更加合适)之后,我发现其实他们就是直接写显存,这个显存在面 ...

  6. 邮件html页编写指南

    前言 写过邮件的html一般都用table来布局,为什么呢?原因是大多数的邮件客户端(比如Outlook和Gmail),会过滤经过多次的邮件编写实践及度娘的指导,我发现,编写自制兼容outlook与f ...

  7. Gson解析:java.lang.IllegalArgumentException: declares multiple JSON fields named status 问题的解决

    在一次写定义系统统一返回值的情况下,碰到了java.lang.IllegalArgumentException: declares multiple JSON fields named status这 ...

  8. es篇-es基础

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. es基础知识 es和solr一样,都是基于Lucene的全文检索数据库 ...

  9. linux下redis开机自启动

    将/usr/local/app/redis-4.0.8/redis.conf文件中daemonize no改为daemonize yes 在/etc目录下新建redis目录:mkdir /etc/re ...

  10. 聊聊如何在华为云IoT平台进行产品开发

    摘要:华为云物联网平台承载着南北向数据互通的功能职责. 本文分享自华为云社区<如何基于华为云IoT物联网平台进行产品开发>,作者: Super.雯 . 华为云物联网平台承载着南北向数据互通 ...