CF1210E.Wojtek and Card Tricks
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Wojtek 刚刚在 Byteland 赢得了一场数学竞赛!奖品非常棒——一本名为《人人都能玩的纸牌戏法》的书。“太好了!”他想,“我终于可以用上那副一直闲置在桌子上的旧扑克牌了!”
书的第一章是“如何将 k 张牌以任意顺序洗牌”。这实际上是 n 种复杂洗牌方法的列表,每种方法都能以确定性的方式对 k 张牌进行洗牌。具体来说,第 i 种方法可以用一个排列 $ (P_{i,1}, P_{i,2}, \dots, P_{i,k}) $ 来描述,这个排列是 1 到 k 的整数的一个排列。如果我们将牌从上到下编号为 1 到 k,那么 Pi,j 表示洗牌后第 j 张牌来自原来牌堆中的第 Pi,j 张。
时间有限,Wojtek 今天只想学习其中的一部分戏法。他会选择两个整数 l,r(1≤l≤r≤n),然后记住从第 l 个到第 r 个(包括两端)的所有戏法。接着,他会拿出一副已经排好序的 k 张牌,不断随机应用他记住的戏法,直到他觉得无聊为止。他依然喜欢数学,所以他开始思考:在他停止洗牌后,他最多能得到多少种不同的牌堆?
Wojtek 还没有选定 l 和 r,但他已经很好奇了。因此,他定义 f(l,r) 表示如果他记住了第 l 到第 r 个戏法(包括两端),他最多能得到多少种不同的牌堆。请你计算:
l=1∑nr=l∑nf(l,r)
的值。
输入格式
第一行包含两个整数 n 和 k(1≤n≤200000,1≤k≤5),分别表示戏法的数量和牌堆中的牌数。
接下来的 n 行,每行描述一种戏法,由 k 个互不相同的整数 Pi,1,Pi,2,…,Pi,k 组成(1≤Pi,j≤k)。
输出格式
输出题目中所描述的总和的值。
输入输出样例
输入#1
3 3 2 1 3 3 1 2 1 3 2
输出#1
25
输入#2
2 4 4 1 3 2 4 3 1 2
输出#2
31
说明/提示
考虑第一个样例:
- 第一个戏法交换了最上面的两张牌。
- 第二个戏法把最下面的一张牌放到牌堆顶。
- 第三个戏法交换了最下面的两张牌。
第一个或第三个戏法都只能让 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 翻译
输入解题思路,AI测评打分。不知道怎么写?