link

题目大意

给$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的更多相关文章

  1. Codeforces 1091D New Year and the Permutation Concatenation 找规律,数学 B

    Codeforces 1091D New Year and the Permutation Concatenation https://codeforces.com/contest/1091/prob ...

  2. 【数学】【CF1091D】 New Year and the Permutation Concatenation

    Description 给定一个数 \(n\),将所有 \(1~\sim~n\) 的排列按照字典序放到一个序列中,求有多少长度为 \(n\) 的子序列 \(p_i~p_{i+1}~\dots~p_{i ...

  3. codeforces#1090 D. New Year and the Permutation Concatenation(打表找规律)

    题意:给出一个n,生成n的所有全排列,将他们按顺序前后拼接在一起组成一个新的序列,问有多少个长度为n的连续的子序列和为(n+1)*n/2 题解:由于只有一个输入,第一感觉就是打表找规律,虽然表打出来了 ...

  4. 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 的 ...

  5. 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) ...

  6. 【Codeforces 1091D】New Year and the Permutation Concatenation

    [链接] 我是链接,点我呀:) [题意] 把1~n的n!种排列依次连接成一个长度为nn!的序列. 让你在这个序列当中找长度为n的连续段,使得连续段中的数字的和为n(n-1)/2 输出符合要求的连续段的 ...

  7. CF Good Bye 2018

    前言:这次比赛爆炸,比赛时各种想多,导致写到\(D\)题时思路已经乱了,肝了\(1\)个多小时都没肝出来,\(B\)题中途因为没开\(long\ long\)又被\(HACK\)了..\(C\)题因为 ...

  8. Good Bye 2018

    Good Bye 2018 2018年最后一场CF,OVER! 弱弱的我只能做出3道A,B,D~~~~ 最后几分钟,感觉找到了C题的规律,结束的那一刻,提交了一发 "Wrong answer ...

  9. Good Bye 2018 (A~F, H)

    目录 Codeforces 1091 A.New Year and the Christmas Ornament B.New Year and the Treasure Geolocation C.N ...

随机推荐

  1. (8)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot网关(Api GateWay)

    说到现在现有微服务的几点不足: 1) 对于在微服务体系中.和 Consul 通讯的微服务来讲,使用服务名即可访问.但是对于手 机.web 端等外部访问者仍然需要和 N 多服务器交互,需要记忆他们的服务 ...

  2. 仓储层接口IBaseRepository解析

    //代码调用由业务层调用,调用方式详见源代码的业务层,升级直接替换TT模板即可,无需覆盖系统using System; using System.Collections.Generic; using ...

  3. 从源码的角度看 React JS 中批量更新 State 的策略(下)

    这篇文章我们继续从源码的角度学习 React JS 中的批量更新 State 的策略,供我们继续深入学习研究 React 之用. 前置文章列表 深入理解 React JS 中的 setState 从源 ...

  4. PyCharm Tips 常用操作帮助

    以下内容转自 http://www.2cto.com/os/201410/341542.html --------------------------------------------------- ...

  5. JS冷门知识盘点

    (+new Date() 是简略写法,得到毫秒 超过多行显示省略号 overflow : hidden; text-overflow: ellipsis; display: -webkit-box; ...

  6. 网站响应式布局/网站自适应问题+rem、em、px、pt及网站字体大小设配

    Bootstrap 网格系统: Bootstrap CSS: Bootstrap 组件及插件: 一.什么是响应式布局?       响应式布局是Ethan Marcotte在2010年5月份提出的一个 ...

  7. Some questions after Reading 《移山之道》

    很少见到用故事的形式来写技术书籍的,这是我看到的第一本,书写得比较有趣,看了之后也是有一定的收获.  作者在此书中旁征博引,引用的东西虽不能一个一个查询是否正确,但是每次读到时候,感觉一种现代的软件工 ...

  8. BugPhobia启程篇章:需求分析与功能定位

    0x01 :引言 If you weeped for the missing sunset, you would miss all the shining stars 我看着大巴缓缓的驶过街角,我躲在 ...

  9. 冲刺Two之站立会议10

    今天是最后一次站立会议,我们为自己软件最终版的发布进行了讨论,针对项目开发过程中出现的问题进行了总结.并讨论了之后软件如何发布和推广.

  10. <<架构漫谈>>读后感

    今天按照老师的要求,看了架构漫谈1--9讲,觉得受益良多,以下是我得点点读后感: (一)什么是架构? 架构的英文是Architecture,从定义上看,架构好像是一个过程,也不是很清晰.下面从架构的缘 ...