题目大意:给定一个$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;
}

  

最新文章

  1. ASP.NET MVC 5– 使用Wijmo MVC 5模板1分钟创建应用
  2. openstack security group and rules python api use
  3. 关于mysql和Apache以及nginx的监控脚本怎么写会比较好的记录
  4. Oracle 11g 的官方支持周期和时限
  5. oracle创建dblink问题
  6. enc
  7. Miles per gallon to kilometers per liter
  8. iOS QQ 扫一扫 捷径URL
  9. elasticsearch(5) 请求体搜索
  10. 数据库-mysql语句-查
  11. (转)deb制作文件详解
  12. 洛谷 4823 [TJOI2013]拯救小矮人
  13. bzoj 3673 可持久化并查集
  14. C++创建虚拟机调用JAVA类
  15. 搜索:ElasticSearch OR MySQL?
  16. Swift 高级运算符
  17. Spring boot官方文档学习(一)
  18. 搭建php服务器网站
  19. webpack 分析
  20. 前端基础-css(1)

热门文章

  1. LOJ6102「2017 山东二轮集训 Day1」第三题 【min-max容斥,反演】
  2. 微信小程序前端promise封装
  3. Beta冲刺(2/5)
  4. QML学习(一)——&lt;简要概念知识点&gt;
  5. win7企业版激活
  6. &lt;英狼&gt;--团队作业3 王者光耀--终极版
  7. 搭建Portainer可视化界面
  8. js中isNaN和Number.isNaN的区别
  9. sql查询最近7天数据(以年-月-日结果展示)
  10. SQL中左连接on and条件和where条件执行先后顺序