CF1210E Wojtek and Card Tricks

题目描述

Wojtek 刚刚在 Byteland 赢得了一场数学竞赛!奖品非常棒——一本名为《人人都能玩的纸牌戏法》的书。“太好了!”他想,“我终于可以用上那副一直闲置在桌子上的旧扑克牌了!” 书的第一章是“如何将 $k$ 张牌以任意顺序洗牌”。这实际上是 $n$ 种复杂洗牌方法的列表,每种方法都能以确定性的方式对 $k$ 张牌进行洗牌。具体来说,第 $i$ 种方法可以用一个排列 $ (P_{i,1}, P_{i,2}, \dots, P_{i,k}) $ 来描述,这个排列是 $1$ 到 $k$ 的整数的一个排列。如果我们将牌从上到下编号为 $1$ 到 $k$,那么 $P_{i,j}$ 表示洗牌后第 $j$ 张牌来自原来牌堆中的第 $P_{i,j}$ 张。 时间有限,Wojtek 今天只想学习其中的一部分戏法。他会选择两个整数 $l, r$($1 \le l \le r \le n$),然后记住从第 $l$ 个到第 $r$ 个(包括两端)的所有戏法。接着,他会拿出一副已经排好序的 $k$ 张牌,不断随机应用他记住的戏法,直到他觉得无聊为止。他依然喜欢数学,所以他开始思考:在他停止洗牌后,他最多能得到多少种不同的牌堆? Wojtek 还没有选定 $l$ 和 $r$,但他已经很好奇了。因此,他定义 $f(l, r)$ 表示如果他记住了第 $l$ 到第 $r$ 个戏法(包括两端),他最多能得到多少种不同的牌堆。请你计算: $$ \sum_{l=1}^n \sum_{r=l}^n f(l, r) $$ 的值。

输入格式

第一行包含两个整数 $n$ 和 $k$($1 \le n \le 200\,000$,$1 \le k \le 5$),分别表示戏法的数量和牌堆中的牌数。 接下来的 $n$ 行,每行描述一种戏法,由 $k$ 个互不相同的整数 $P_{i,1}, P_{i,2}, \dots, P_{i,k}$ 组成($1 \le P_{i,j} \le k$)。

输出格式

输出题目中所描述的总和的值。

说明/提示

考虑第一个样例: - 第一个戏法交换了最上面的两张牌。 - 第二个戏法把最下面的一张牌放到牌堆顶。 - 第三个戏法交换了最下面的两张牌。 第一个或第三个戏法都只能让 Wojtek 得到两种不同的牌堆(即两张牌交换或不交换)。因此,$f(1,1) = f(3,3) = 2$。 第二个戏法可以让他以循环的方式洗牌,因此 $f(2,2) = 3$。 事实证明,前两个戏法或后两个戏法都足以让他以任意方式洗牌。因此,$f(1,2) = f(2,3) = f(1,3) = 3! = 6$。 由 ChatGPT 4.1 翻译