题目大意:给定一个$n$的排列,求它在$n$的全排列中的名次

题解:康托展开,对于一个全排列,第$i$为有$n+1-i$种选择,用变进制数表示,这一位就是$n+1-i$进制。记排列中第$[1,i)$中比第$i$位小的数个数位$a$,变进制数中第$i$位的数为$i-a-1$。可以用树状数组维护

卡点:

C++ Code:

#include <cstdio>
#include <iostream>
#include <algorithm>
#define maxn 1000010
#define mul(a, b) (static_cast<long long> (a) * (b) % mod)
const int mod = 998244353;inline void reduce(int &x) { x += x >> 31 & mod; }
int fac[maxn], ans = 1, n;namespace BIT {int V[maxn], res;inline void add(int p) { for (; p <= n; p += p & -p) ++V[p]; }inline int query(int p) { for (res = 0; p; p &= p - 1) res += V[p]; return res; }
}int main() {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);std::cin >> n;fac[0] = 1;for (int i = 1; i <= n; ++i) fac[i] = mul(fac[i - 1], i);for (int i = 1, x; i <= n; ++i) {std::cin >> x;reduce(ans += mul(x - BIT::query(x) - 1, fac[n - i]) - mod);BIT::add(x);}std::cout << ans << '\n';return 0;
}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/11161585.html

[洛谷P5367]【模板】康托展开相关推荐

  1. 洛谷 P1098 字符串的展开

    洛谷 P1098 字符串的展开 传送门 I'm here! 思路 大暴力字符串题 这个题让我们展开一个字符串\(某字符-某字符\),并且有三个参数对应几种不同的输出方式,首先想到打暴力,因为串特别小, ...

  2. 专题·树链剖分【including 洛谷·【模板】树链剖分

    初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...

  3. 洛谷·【模板】点分树 | 震波【including 点分树

    初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...

  4. 洛谷——P1098 字符串的展开

    P1098 字符串的展开 题目描述 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于"d-h"或者&q ...

  5. 洛谷.4897.[模板]最小割树(Dinic)

    题目链接 最小割树模板.具体见:https://www.cnblogs.com/SovietPower/p/9734013.html. ISAP不知为啥T成0分了.. Dinic: //1566ms ...

  6. 强连通分量:洛谷P3387 模板:缩点

    传送门 顾名思义,模板awa #include <cstdio> #include <cstring> #include <cmath> #include < ...

  7. 洛谷P1098 字符串的展开【字符串】【模拟】

    题目描述 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于"d-h"或者"4-8" ...

  8. 【后缀数组】洛谷P3809模板题

    题目背景 这是一道模板题. 题目描述 读入一个长度为 n n n 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置. ...

  9. 洛谷 P1919 模板】A*B Problem升级版(FFT快速傅里叶)

    https://www.luogu.com.cn/problem/P1919 题目背景 本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源. 题目描述 给你两个正整数 a ...

最新文章

  1. Python scrapy爬取京东,百度百科出现乱码,解决方案
  2. poj 1905 Expanding Rods(二分)
  3. winform 拖动无边框窗体(调用Windows API)
  4. python实现mysql的读写分离及负载均衡
  5. 浅谈三种使用Redis实现MQ的方式
  6. php 微信机器人_php7 版本的微信机器人来了!(这应该是最灵活的版本了)
  7. kettle能否自动建表_Kettle、Python实现报表自动化
  8. 企业支付宝转账到银行卡(免费率 无限额)PHP 演示示例
  9. 软件测试之语音识别(ASR)测试
  10. 《没那么简单》-黄小琥
  11. prometheus remote write for springboot 远程写入<一>
  12. 推荐一个不到2MB的C#开发工具箱,集成了上千个常用操作类
  13. BUUCTF笔记之Real部分WP(一)
  14. Windows程序crash该怎么分析?
  15. TIA portal西门子博途中优化的DB块和标准DB块的区别
  16. python系列3(list tupe dict )
  17. Blender2.8安装Armory3D插件
  18. android流量监控软件设计与实现,基于android平台的流量监控系统的设计与实现
  19. androidQ集成apk
  20. 【C语言】如何很好的实现复数类型

热门文章

  1. linux ssh 推送文件_通过SSH实现Windows与linux之间传输文件
  2. (一)开机demo测试及测试流程
  3. java基本数据类型填空题_java基本数据类型练习题
  4. Ubuntu OpenCV 自定义环境变量 pkg-config / PKGCONFIGPATH
  5. 计算机导航医学应用,【2016年】计算机导航在全膝关节置换中的应用技术及进展【临床医学论文】.doc...
  6. 平方根升余弦滚降滤波器matlab函数,平方根升余弦滚降数字滤波器的设计和实现.pdf...
  7. springboot如何使用多线程,线程池管理
  8. PHP中利用Ffmpeg获得flv视频缩略图和播放时间
  9. Silverlight 2.5D RPG游戏技巧与特“.NET技术”效处理:(十一)AI系统
  10. 摘录一些介绍Linux DKMS的博客文章