[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 ...
随机推荐
- 12.15 Daily Scrum
Today's Task Tomorrow's Task 丁辛 实现和菜谱相关的餐厅列表. 实现和菜谱相关的餐厅列表. 邓亚梅 美化搜索框UI. 美 ...
- Scrum Meeting day 3
第三次会议 No_00:工作情况 No_01:任务说明 待完成 已完成 No_10:燃尽图 No_11:照片记录 No_100:代码/文档签入记录
- Linux内核分析 笔记六 进程的描述和进程的创建 ——by王玥
一.知识点总结 (一)进程的描述 1.操作系统内核里有三大功能: 进程管理 内存管理 文件系统 2.进程描述符:task_struct 2.进程描述符——struct task_struct 1. p ...
- article元素以及section
<p>发表日期:<time pubdate="pubdate">2015/10/30</time></p> article元素有自己 ...
- github链接
github链接:https://github.com/bjing123 test1:https://github.com/bjing123/test-/blob/master/test1.t ...
- java — 静态绑定和动态绑定
绑定:一个方法的调用与方法所在的类关联起来.java中的绑定分为静态绑定和动态绑定,又被称作前期绑定和后期绑定. 静态绑定:(final.static.private)在程序执行前已经被绑定,也就是说 ...
- Beta冲刺随笔汇总
项目Beta冲刺(团队) Beta冲刺随笔汇总 姓名 学号 博客链接 何守成 031602408 http://www.cnblogs.com/heshoucheng/ 黄锦峰 031602411 h ...
- git使用命令记录
一,两个概念:1.工作区:你电脑里能看见的目录,比如一个项目文件夹就是一个工作区2.版本库工作区(该项目的文件夹)中有一个隐藏文件 .git ,就是git的版本库.(这个文件默认是隐藏,Ctrl+h ...
- C语言复制文件的两种简单的方法【从根本解决问题】
网上的方法大致有这样几种: 1.使用操作系统提供的复制文件的API 2.使用C语言本身提供的复制文件的函数 3.直接读写文件,从文件角度来操作,从而直接将一个文件复制 这里我们使用的就是这第三种. 复 ...
- [cnbeta]iPhone 2018年全球出货2.25亿部:中国区下滑两成
iPhone 2018年全球出货2.25亿部:中国区下滑两成 2019年01月22日 20:12 501 次阅读 稿源:快科技 0 条评论 https://www.cnbeta.com/artic ...