题目
每次给定n(n<=1e6),有n个限制,
第i个限制是(li,ri),要求第i个数位于[li,ri]之间
问有多少排列同时满足n个限制,答案对2取模,也就是只需要知道奇偶性即可
实际t(t<=1e6)组样例,保证sumn不超过1e6
思路来源
菜菜园子群+daydreamers群
题解
首先,问题转化成二分图的完美匹配计数问题
左边点[1,n],右边点[1,n],左边点i向右边点[li,ri]里的每个点连边,问有多少种完美匹配
这个东西可以用积和式求,矩阵的构造方法是a[i][j]=1(如果左i和右j之间有边),否则为0
根据积和式的定义,
这个就是n行n列里选n个1出来,任意两个数不在同一行同一列,n!种方案都求和的值
而根据行列式的定义,n行n列里选n个1出来,任意两个数不在同一行同一列,
对于这n!种方案,其中逆序对为奇数的排列是减,逆序对为偶数的排列是加

而每项要么是1要么是0,所以这俩东西模2的值是相同的
01矩阵(F2上的矩阵/全幺模矩阵)里行列式的值只可能是0,-1,1三种情况,
F2即只有0和1的域(mod 2的域)
线性相关(秩为0)时行列式值是0,单位矩阵E的行列式值是1,给1的两行换一换行列式是-1
所以,问题等价于判断矩阵对应的行列式的值是否为0,即是否线性相关
做法是对于每个[l,r],连边l-1和r,如果出现环,说明线性相关,否则线性无关

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



