题意:求所有字典序大于给定序列且满足条件的排列个数之和。

思路:

考虑dp即可,打表出卡特兰数优化,直接dp可以44...

#include <bits/stdc++.h>
using namespace std ;
#define int long long
const int mod = 998244353ull;
inline int pow(int x,int y) {
int ret = 1;
while(y) {
if(y & 1) ret = ret * x % mod;
x = x * x % mod;
y >>= 1;
}
return ret;
}
const int maxn = 6e6+10;
int fac[maxn<<1];
int ifac[maxn<<1];
inline int C (int x,int y) {
return fac[x] * ifac[y] % mod * ifac[x - y] % mod;
} inline int calc(int x,int y) {
if(x < y) {
return 0;
} int d = (x << 1) - y;
int res = C(d,x);
if(x != y) {
res = (res - C(d,x + 1))%mod;
}
return res;
} inline void init() {
fac[0] = 1;
for(int i = 1;i <= maxn; ++i) {
fac[i] = fac[i - 1] * i % mod;
}
ifac[maxn] = pow(fac[maxn],mod - 2);
for(int i = maxn;i >= 1; --i) {
ifac[i - 1] = ifac[i] * i % mod;
}
}
int p[maxn];
int T,n;
bool vis[maxn];
signed main () {
ios::sync_with_stdio(false);
init();
cin >> T;
while(T--) {
cin >> n;
for(int i = 1;i <= n; ++i) {
cin >> p[i];
}
memset(vis,0,sizeof(vis));
int mx = 0;
int mn = 1;
int res = 0;
int cnt = 0;
for(int i = 1;i < n; ++i,cnt --) {
if(p[i] > mx) {
cnt += p[i] - mx;
}
mx = max(mx,p[i]);
vis[p[i]] = 1;
while(vis[mn] == 1) {
mn++;
}
res += calc(n - i + 1,cnt + 1);
res %= mod;
if(mx > p[i] && p[i] > mn) break;
}
cout<<(res + mod) % mod <<endl;
}
return 0;
}

[NOI 2018]冒泡排序的更多相关文章

  1. [LOJ 2720][BZOJ 5417][UOJ 395][NOI 2018]你的名字

    [LOJ 2720][BZOJ 5417][UOJ 395][NOI 2018]你的名字 题意 给定一个大串 \(S\) 以及 \(q\) 次询问, 每次询问给定一个串 \(T\) 和区间 \([l, ...

  2. NOI 2018 酱油记

    转眼离 NOI 2018 已经过了一个星期了,退役的我还是随便来水水吧. 语法.错字之类的可能会很多,但是我也不拘这点小节了. 恭喜 yww, zjt, sk 进队,zwl, myh au , yay ...

  3. [LOJ 2718][UOJ 393][BZOJ 5415][NOI 2018]归程

    [LOJ 2718][UOJ 393][BZOJ 5415][NOI 2018]归程 题意 给定一张无向图, 每条边有一个距离和一个高度. 再给定 \(q\) 组可能在线的询问, 每组询问给定一个点 ...

  4. [LOJ 2721][UOJ 396][BZOJ 5418][NOI 2018]屠龙勇士

    [LOJ 2721][UOJ 396][BZOJ 5418][NOI 2018]屠龙勇士 题意 题面好啰嗦啊直接粘LOJ题面好了 小 D 最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照 ...

  5. 【NOI 2018】冒泡排序(组合数学)

    题意大概是给定一个长度为$n$的排列$p$,求有多少长度为$n$的排列满足冒泡排序的交换次数为$\frac{1}{2} \sum\limits_{i = 1}^{n}|i - p_{i}|$. 可以发 ...

  6. NOI 2018网络同步赛(游记?)

    刚中考完那段时间比较无聊,报名了一个同步赛,报完名才发现成绩单是要挂到网上的,而且因为报的早给了一个很靠前的考号...那布星啊,赶紧学点东西,于是在一周内学了网络流,Treap以及一些数论. Day1 ...

  7. [NOI 2018] 归程

    Description 传送门 Solution 65分做法 先求出每个点到\(1\)号点的最短路,记为\(d[i]\).然后按照海拔从大到小依次加边,并查集维护每个连通块中\(d[i]\)的最小值, ...

  8. 解题:NOI 2018 归程

    题面 清新友好的题目 跑一个最短路,然后对海拔建Kruskal重构树,从最后接上去的边(最低的一个)开始DFS一下处理子树里路程的最小值. 询问是每次在重构树上倍增找到深度最浅的海拔高于当天水位线的节 ...

  9. 【NOI 2018】屠龙勇士(扩欧)

    题意理解错了... 一把剑打一条龙,打了$x$次后如果龙不死,你就Game Over了. 显然,面对每条龙使用的剑是固定的,如果所有龙中有一条没打死你就挂了. 可以知道,可行的答案集合就是所有龙的可行 ...

随机推荐

  1. Window10 64bit Tomcat9 安装

    最近正在做一个小项目,需要用到Tomcat部署java web. 准备: 1.window 10 64bit 2.jdk1.8.0_181(请自行安装,记得配置好JAVA_HOME) 3.tomcat ...

  2. Java 的信号灯

    Semaphore可以维护当前访问自身的线程个数,并提供了同步机制.使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数. Semaphore实现的功能就类似厕所有 ...

  3. 转化json里面的特殊字符

    前几天要做一个接受图片地址并将图片地址存放在数据库中,发现图片地址中有好多特殊字符反斜杠,中括号之类的,下面就是解决这个问题的代码 public String StringToJson(String ...

  4. Jmeter-【JSON Extractor】-响应结果中三级key取值

    一.请求返回样式 二.取第三个option 三.查看结果

  5. PDO基础

    //PDO:数据访问抽象层 $dsn = "mysql:dbname=mydb;host=localhost";//造PDO对象 $pdo = new PDO($dsn," ...

  6. 关于ThreadLocal的一道面试题(酷我公司)

    2013年8月,本人那时候刚毕业来到了北京找工作,在网上投递了各种简历,也面试了很多家公司,遇到最大的问题就是:你什么时候毕业的呀?,做过什么项目呀?都将我拒之门外,但是我还是幸运总会来的,那天早上9 ...

  7. Mysql 触发器写法

    DELIMITER $$ USE `库名`$$ DROP TRIGGER /*!50032 IF EXISTS */ `trig_contract_status`$$ CREATE /*!50017 ...

  8. HDU3342:判断有向图中是否存在3元环-Tarjan或拓扑排序

    题目大意: 给你一个关系图,判断是否合法.每个人都有师父和徒弟,可以有很多个: 若A是B的师父,B是C的师父,则A也算C的师父. 不合法:  1) . 互为师徒:(有回路)  2) .你的师父是你徒弟 ...

  9. Centos 6 & Centos 7安装rabbitmq3.6.15(单节点)

    系统准备 安装 erlang 语言环境 安装rabbitmq 配置网页插件 配置访问账号密码和权限 系统准备 centos6.5 与 centos7 都可以 ###安装依赖文件 yum -y inst ...

  10. WebStorm+Node.js开发环境的配置

    1 下载地址:  webstorm:http://www.jetbrains.com/webstorm node.js:https://nodejs.org/download/ 2 安装node.js ...