发现每一块一定是按照一定的顺序的。

然后与标号无关,并且相同大小的对答案的影响相同。

然后列出递推式,上NTT+分治就可以了。

然后就可以与输入同阶处理答案了。

#include <map>
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define ll long long
#define mp make_pair
#define maxn (1<<18)
#define md 786433
#define g 10 int dp[maxn],fac[maxn],A[maxn],B[maxn],t,n,m,rev[maxn],C[maxn]; int ksm(int a,int b)
{
int ret=1;
for(;b;b>>=1,a=(ll)a*a%md)if(b&1)ret=(ll)ret*a%md;
return ret;
} void NTT(int * x,int n,int flag)
{
F(i,0,n-1) if (rev[i]>i) swap(x[rev[i]],x[i]);
for (int m=2;m<=n;m<<=1)
{
int mid=m>>1,wn=ksm(10,((md-1)/m*flag+md-1)%(md-1));
for (int i=0;i<n;i+=m)
{
int w=1;
for (int j=0;j<mid;++j)
{
int u=x[i+j],v=(ll)x[i+j+mid]*w%md;
x[i+j]=(u+v)%md;x[i+j+mid]=((u-v)%md+md)%md;
w=(ll)w*wn%md;
}
}
}
if (flag==-1)
{
int inv=ksm(n,md-2);
F(i,0,n-1) x[i]=(ll)x[i]*inv%md;
}
} void CDQ(int l,int r)
{
if(l==r)return;int mid=l+r>>1;CDQ(l,mid);
int n=mid-l+r-l,m=1;while((1<<m)<n)++m;n=(1<<m);
F(i,0,n-1)A[i]=B[i]=0;
F(i,l,mid)A[i-l]=dp[i];F(i,1,r-l) B[i-1]=fac[i];
F(i,1,n-1) rev[i]=(rev[i>>1]>>1)|((i&1)<<(m-1));
NTT(A,n,1);NTT(B,n,1);
F(i,0,n-1)C[i]=(ll)A[i]*B[i]%md;NTT(C,n,-1);
F(i,mid+1,r)dp[i]=((dp[i]-C[i-l-1])%md+md)%md;
CDQ(mid+1,r);
} int main()
{
fac[0]=1; F(i,1,100000) fac[i]=(ll)fac[i-1]*i%md;
dp[0]=0; F(i,1,100000) dp[i]=fac[i];
CDQ(1,100000);
scanf("%d",&t);
while(t--)
{
int ans=1,k,x;
scanf("%d%d",&n,&m);
F(i,1,m)
{
int mn=n+1,mx=-1;
scanf("%d",&k); ans=(ll)ans*dp[k]%md;
F(j,1,k) scanf("%d",&x),mn=min(mn,x),mx=max(mx,x);
if (k!=mx-mn+1) ans=0;
}
printf("%d\n",ans);
}
}

  

ZOJ 3874 Permutation Graph ——分治 NTT的更多相关文章

  1. ZOJ 3874 Permutation Graph 分治NTT

    Permutation Graph Time Limit: 2 Seconds      Memory Limit: 65536 KB Edward has a permutation {a1, a2 ...

  2. ZOJ 3874 Permutation Graph (分治NTT优化DP)

    题面:vjudge传送门 ZOJ传送门 题目大意:给你一个排列,如果两个数构成了逆序对,就在他们之间连一条无向边,这样很多数会构成一个联通块.现在给出联通块内点的编号,求所有可能的排列数 推来推去容易 ...

  3. ZOJ3874 Permutation Graph 【分治NTT】

    题目链接 ZOJ3874 题意简述: 在一个序列中,两点间如果有边,当且仅当两点为逆序对 给定一个序列的联通情况,求方案数对\(786433\)取模 题解 自己弄了一个晚上终于弄出来了 首先\(yy\ ...

  4. ZOJ3874 Permutation Graph

    Time Limit: 2 Seconds      Memory Limit: 65536 KB Edward has a permutation {a1, a2, … an}. He finds ...

  5. [gdoi2018 day1]小学生图论题【分治NTT】

    正题 题目大意 一张随机的\(n\)个点的竞赛图,给出它的\(m\)条相互无交简单路径,求这张竞赛图的期望强联通分量个数. \(1\leq n,m\leq 10^5\) 解题思路 先考虑\(m=0\) ...

  6. #565. 「LibreOJ Round #10」mathematican 的二进制(期望 + 分治NTT)

    题面 戳这里,题意简单易懂. 题解 首先我们发现,操作是可以不考虑顺序的,因为每次操作会加一个 \(1\) ,每次进位会减少一个 \(1\) ,我们就可以考虑最后 \(1\) 的个数(也就是最后的和) ...

  7. LOJ2541 PKUWC2018猎人杀(概率期望+容斥原理+生成函数+分治NTT)

    考虑容斥,枚举一个子集S在1号猎人之后死.显然这个概率是w1/(Σwi+w1) (i∈S).于是我们统计出各种子集和的系数即可,造出一堆形如(-xwi+1)的生成函数,分治NTT卷起来就可以了. #i ...

  8. 【BZOJ-3456】城市规划 CDQ分治 + NTT

    题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=3456 Solution 这个问题可以考虑dp,利用补集思想 N个点的简单图总数量为$2^{ ...

  9. CF960G Bandit Blues 【第一类斯特林数 + 分治NTT】

    题目链接 CF960G 题解 同FJOI2016只不过数据范围变大了 考虑如何预处理第一类斯特林数 性质 \[x^{\overline{n}} = \sum\limits_{i = 0}^{n}\be ...

随机推荐

  1. 2018.6.18 MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案

    MyEclipse导入jQuery-1.8.0.min.js等文件的时候有时候会报了一堆missing semicolon的错误.怎么解决这个报错呢?方法如下: 1.选中报错的jquery文件例如&q ...

  2. python实现剑指offer删除链表中重复的节点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  3. python_25_string

    name="my name is 齐志光qizhiguang" print(name.capitalize())#首字母变大写 print(name.count('i'))#统计字 ...

  4. DOS当中的基本操作命令,如何切换磁盘,如何查看文件和文件夹,如何清屏,进入文件夹的命令,javac是什么意思,作用是什么?DOS如何建文件夹?退出文件夹?

    如何切换磁盘:使用盘符+:举例 d: 如何查看文件和文件夹 dir/w 如何清屏: cls (clear screen) 进入文件夹的命令cd ,举例cd JDK javac是什么意思,c 是comp ...

  5. swift 循环语句

    // // main.swift // switch // // Created by lanou on 16/10/21. // Copyright (c) 2016年 lanou. All rig ...

  6. HH的项链题解(离线思想+链表+树状数组)

    本人第一篇博客重磅推出!!! 希望各位朋友以后多多捧场也多给写意见(我个人喜欢把题解写得啰嗦一点,因为这样方便理解,各位巨佬勿喷) 来讲一道提高+/省选-的骚题:HH的项链(这个HH你理解成皇后呵呵哈 ...

  7. 牛客NOIP提高组R1 C保护(主席树)

    题意 题目链接 Sol Orz lyq 我们可以把一支军队(u, v)拆分为两个(u, lca)和(v, lca) 考虑一个点x,什么时候军队对它有贡献,肯定是u或v在他的子树内,且lca在他的子树外 ...

  8. 爬虫学习(八)——带cookie的网页进行爬取

    # 前提:# # 通常,很多网站需要登录才能进行浏览,所以在爬取这些网站时,也需要进行登录,并拿取登录时的cookie# # 登录网页,服务器会给客户端一个牌子cookie# # 访问登录页面时,带着 ...

  9. Spring Cloud学习介绍

    最近在学spring cloud, 整理了下 简单知识要求: 1.要了解springboot 2.了解分布式架构 3.了解微服务 4.了解springcloud是做什么的 带着这些,初学者 就至少有个 ...

  10. windows_Bat_Scripts查看系统IP-更改regedit-更新系统补丁

    1.1    脚本名称 Update_patch.bat 1.2    脚本代码 @echo off :menu cls mode con cols=48 lines=27 & color 0 ...