题目名称 3302. [CSP JX2019PJ]非回文串(民间数据)
输入输出 cspjx2019pj_palindrome.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 20
题目来源 Gravatar数声风笛ovo 于2019-12-06加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:1, 提交:1, 通过率:100%
Gravatar数声风笛ovo 100 0.012 s 13.66 MiB C++
关于 非回文串(民间数据) 的近10条评论(全部评论)
回复 @梦那边的美好ET :
建议把自己的简单题重评掉然后再做
Gravatar数声风笛ovo
2020-03-05 09:50 3楼
额,完全不想破坏1111但还想做怎么办?
Gravatar梦那边的美好ET
2020-03-03 17:37 2楼
数学题实锤了
Gravatar数声风笛ovo
2020-03-03 17:36 1楼

3302. [CSP JX2019PJ]非回文串(民间数据)

★★   输入文件:cspjx2019pj_palindrome.in   输出文件:cspjx2019pj_palindrome.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

数据提供者 @数声风笛

Alice 有 $n$ 个字符,它们都是英文小写字母,从 $1 \sim n$ 编号,分别为 $c_1,c_2, \dots , c_n$。

Bob 准备将这些字符重新排列,组成一个字符串 $S$。Bob 知道 Alice 有强迫症,所以他打算将 $S$ 组成一个非回文串来折磨 Alice。 现在 Bob 想知道他共有多少种不同的排列字符的方案,能使得 $S$ 是个非回文串。

一种排列字符的方案指的是一个 $1 \sim n$ 的排列 $p_i$,它所组成的 $S = c_{p_1}c_{p_2} \dots c_{p_n}$。一个字符串是非回文串,当且仅当它的逆序串与原串不同。

例如 "abcda" 的逆序串为 "adcba",与原串不同,故 "abcda" 是非回文串。而 "abcba" 的逆序串与原串相同,是回文串。 由于最后的结果可能很大,你只需要告诉 Bob 总方案数对 $10^9+7$ 取模后的值。

【输入格式】

第一行一个正整数 $n$ 表示字符个数。 第二行 $n$ 个英文小写字母 $c_i$。

【输出格式】

仅一行一个整数表示答案。答案对 $10^9+7$ 取模。

【样例输入1】

3
aba

【样例输出1】

4

【样例输入2】

8
aabbbbcc

【样例输出2】

39168

【数据规模与约定】

对于 $20\%$ 的数据,$n \le 8$;

对于 $50\%$ 的数据,$n \le 20$;

另有 $30\%$ 的数据,字符只包含 "a" 和 "b";

对于 $100\%$ 的数据,$3 \le n \le 2000$。

【来源】

CSP-J 2019 江西省重赛 Task 4.