[CF1091D]New Year and the Permutation Concatenation

题目大意
给$n!$个$n$的排列,按字典序从小到大连成一条序列,例如$3$的情况为:$[1,2,3, 1,3,2, 2,1,3 ,2,3,1 ,3,1,2 ,3,2,1]$,问其中长度为$n$,且和为$sum=n\times (n+1)/2$的序列有多少个?
试题分析
对于合理的序列有两种情况,第一种是就是排列的,第二种就是前面$k$个与后面的$n-k$的一块组成。
对于第一种情况,答案只要$n$个,所以我们只考虑第二种情况。
当$n=3$时,$n\times n!=3!\times 3\text{=}18$
而直接生成的序列为$[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]$
而我们思考$next\_permutatin$是怎么判断下一个排列的,假设某一个序列长度为$n$,最长的递减的后缀长度$k$,那么它的下一个排列是这样产生的:那么它的下一个排列是这样产生的:与后$k$个数中比整个序列的第$n-k$个数大且最小的那个交换,然后将后$k$个数按从小到大排序。

如图所示,若想要成为第二种情况,则$A$集合需等于$A’$集合。
而这时我们能确定$A$当前的一定不是递减的,所以问题可以转换成排除法当前序列末尾$k$个是按序递减的情况数。
举个例子:
$k=1$时,排除$[3,1,3],[2,2,1],[3,2,3],[1,3,1].[2,3,2]$
$k=2$时,排除$[(3,2),2],[(3,1),3]$
所以说我们现在只要求不行的方案数即可。
只要确定了前$k-x$个数,那么后面关于$x$的递减顺序是一定的。
所以当$k=x$时,排除方案数为$A_n^k$,但是最后一个是没有连接的,所以要$-1$,即为$A_n^k-1$
所以总方案数为$n\times n!-(n-1) - \sum_{k=1}^{n-1} (\frac{n!}{k!}-1)$.
整理的$n\times n!-\sum_{k=1}^{n-1} \frac{n!}{k!}$
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long
#define mod 998244353
using namespace std;
inline int read()
{
int f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return ans*f;
}
const int N=;
int ans,n,fac[N],f[N];
signed main(){
n=read();fac[]=;
for(int i=;i<=n;i++) fac[i]=fac[i-]*i,fac[i]%=mod;
f[n]=;
for(int i=n-;i>=;i--) f[i]=f[i+]*(i+),f[i]%=mod;
ans=n*fac[n];
for(int i=;i<n;i++) ans=((ans-f[i])%mod+mod)%mod;
printf("%d\n",ans);
}
[CF1091D]New Year and the Permutation Concatenation的更多相关文章
- Codeforces 1091D New Year and the Permutation Concatenation 找规律,数学 B
Codeforces 1091D New Year and the Permutation Concatenation https://codeforces.com/contest/1091/prob ...
- 【数学】【CF1091D】 New Year and the Permutation Concatenation
Description 给定一个数 \(n\),将所有 \(1~\sim~n\) 的排列按照字典序放到一个序列中,求有多少长度为 \(n\) 的子序列 \(p_i~p_{i+1}~\dots~p_{i ...
- codeforces#1090 D. New Year and the Permutation Concatenation(打表找规律)
题意:给出一个n,生成n的所有全排列,将他们按顺序前后拼接在一起组成一个新的序列,问有多少个长度为n的连续的子序列和为(n+1)*n/2 题解:由于只有一个输入,第一感觉就是打表找规律,虽然表打出来了 ...
- Good Bye 2018 D. New Year and the Permutation Concatenation
传送门 https://www.cnblogs.com/violet-acmer/p/10201535.html 题意: 求 n 的所有全排列组成的序列中连续的 n 个数加和为 n*(n+1)/2 的 ...
- Codeforces Good Bye 2018 D (1091D) New Year and the Permutation Concatenation
题意:给n!个n的排列,按字典序从小到大连成一条序列,例如3的情况为:[1,2,3, 1,3,2, 2,1,3 ,2,3,1 ,3,1,2 ,3,2,1],问其中长度为n,且和为sum=n*(n+1) ...
- 【Codeforces 1091D】New Year and the Permutation Concatenation
[链接] 我是链接,点我呀:) [题意] 把1~n的n!种排列依次连接成一个长度为nn!的序列. 让你在这个序列当中找长度为n的连续段,使得连续段中的数字的和为n(n-1)/2 输出符合要求的连续段的 ...
- CF Good Bye 2018
前言:这次比赛爆炸,比赛时各种想多,导致写到\(D\)题时思路已经乱了,肝了\(1\)个多小时都没肝出来,\(B\)题中途因为没开\(long\ long\)又被\(HACK\)了..\(C\)题因为 ...
- Good Bye 2018
Good Bye 2018 2018年最后一场CF,OVER! 弱弱的我只能做出3道A,B,D~~~~ 最后几分钟,感觉找到了C题的规律,结束的那一刻,提交了一发 "Wrong answer ...
- Good Bye 2018 (A~F, H)
目录 Codeforces 1091 A.New Year and the Christmas Ornament B.New Year and the Treasure Geolocation C.N ...
随机推荐
- vue开发小结(下)
前言 继前几天总结了vue开发小结(上)后,发现还有很多的点没有能列举出来,于是还是打算新建一个下篇,再补充一些vue开发中需要注意的细节,确实还是都是细节的问题,我只是在这里强调下,希望对大家有帮助 ...
- Git push 时如何避免出现 "Merge branch 'master' of ..."
在使用 Git 的进行代码版本控制的时候,往往会发现在 log 中出现 "Merge branch 'master' of ..." 这句话,如下图所示.日志中记录的一般为开发过程 ...
- SCP和Rsync远程拷贝的几个技巧
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...
- MongoDB副本集(一主一备+仲裁)环境部署-运维操作记录
MongoDB复制集是一个带有故障转移的主从集群.是从现有的主从模式演变而来,增加了自动故障转移和节点成员自动恢复.MongoDB复制集模式中没有固定的主结点,在启动后,多个服务节点间将自动选举产生一 ...
- linux-shell-变量参数
sxt1 的生命周期随着调起而生效,结束就消失 子进程和父进程的关系,
- 修改sga_max_size大小后重启数据库报 ORA-00851
http://blog.itpub.net/30150152/viewspace-1449898/
- python2 与 python3 实现共存
已有配置 Anaconda2+python2.7 方案一:直接安装官网原生python3.6 1.修改根目录下python.exe ->python3.exe pythonw.exe - ...
- eclipse jee使用
eclipse jee 安装 已经安装过elipse for Java,不知道会不会冲突? 查过,原来,你就算安装多个elipse for java都没事,更不用说jee.我选择的是eclipse-i ...
- JavaScript 模拟 HashMap例子
function map(){ var map = {}; // Map map = new HashMap(); var key = "key"; va ...
- Jmeter 通过json Extracted 来获取 指定的值的id
在没有 精确或模糊查询的接口时可以使用jmeter 获取指定的值的ID import java.lang.String ; String getTargetName="iphone632g& ...