2021.08.05 P5357 康托展开模板(康托展开)

P5367 【模板】康托展开 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

重点:

1.康托展开

算法学习笔记(56): 康托展开 - 知乎 (zhihu.com)

题意:

求 1∼N 的一个给定全排列在所有1∼N 全排列中的排名。结果对 998244353取模。

分析:

如题。

代码如下:

树状数组优化,时间复杂度O(nlogn)

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std; typedef long long ll;
const int N=1e6+10;
const ll mod=998244353;
int n,a[N],tree[N];
ll ans,A[N],fact[N]; inline ll read(){
ll s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
int lowbit(int x){
return x&-x;
}
void add(int x,int k){
for(int i=x;i<=n;i+=lowbit(i))tree[i]+=k;
}
int query(int x){
int fin=0;
for(int i=x;i;i-=lowbit(i))fin+=tree[i];
return fin;
} int main(){
n=read();
fact[1]=1;
for(int i=2;i<n;i++)fact[i]=fact[i-1]*i%mod;
//for(int i=1;i<n;i++)cout<<fact[i]<<" ";cout<<endl<<endl;
for(int i=1;i<=n;i++)a[i]=read();
for(int i=n;i>=1;i--){
A[i]=query(a[i]);
add(a[i],1);
}
//for(int i=1;i<=n;i++)cout<<A[i]<<" ";cout<<endl<<endl;
for(int i=1;i<n;i++)ans=(ans+A[i]*fact[n-i]%mod)%mod;
cout<<(ans+1)%mod;
return 0;
}

2021.08.05 P5357 康托展开模板(康托展开)的更多相关文章

  1. 2021.08.05 P2168 荷马史诗(哈夫曼树模板)

    2021.08.05 P2168 荷马史诗(哈夫曼树模板) [P2168 NOI2015] 荷马史诗 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.k叉哈夫曼树如果子结 ...

  2. 2021.08.05 P1738 洛谷的文件夹(树形结构)

    2021.08.05 P1738 洛谷的文件夹(树形结构) P1738 洛谷的文件夹 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树!! 题意: 给出n个网页路径,求 ...

  3. 2021.08.05 P7095 不离【扶咕咕出题】(贪心)

    2021.08.05 P7095 不离[扶咕咕出题](贪心) [P7095 yLOI2020] 不离 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 游戏中人物有两个属性,我 ...

  4. 2021.08.05 P1340 兽径管理(最小生成树)

    2021.08.05 P1340 兽径管理(最小生成树) P1340 兽径管理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.离线化. 题意: 有n个点,m条边,每次加 ...

  5. 康托展开&逆康托展开学习笔记

    啊...好久没写了...可能是最后一篇学习笔记了吧 题目大意:给定序列求其在全排列中的排名&&给定排名求排列. 这就是康托展开&&逆康托展开要干的事了.下面依次介绍 一 ...

  6. 2021.08.01 P3377 左偏树模板

    2021.08.01 P3377 左偏树模板 P3377 [模板]左偏树(可并堆) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<iostream> ...

  7. 2021.08.16 P1260 工程规划(差分约束)

    2021.08.16 P1260 工程规划(差分约束) 重点: 1.跑最短路是为了满足更多约束条件. P1260 工程规划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 造 ...

  8. 2021.08.10 Euler函数总结

    2021.08.10 Euler函数总结 知识: 记 φ(n) 表示在 [1,n] 中与 n互质的数的个数. 1.p为质数,则 \[φ(p^l)=p^l-p=p^{l-1}(p-1) \] 注:每p个 ...

  9. http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

    http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

随机推荐

  1. Jquery.Datatables dom表格定位 (转)

    Datatables会添加一些控制元素在表格的周围,比如默认状态下改变每页显示条数(l)的空间在左上角,即使搜索框(f)在右上角,表格的信息(i)显示在左下角,分页控件(p)显示在右下角. 这些控件在 ...

  2. 配置jenkins+git+python实现接口自动化持续集成

    1.安装jenkins服务(傻瓜式安装,这里不做描述) 2.windows上访问jenkins地址(http://ip:端口号/),用户名密码登录 3.进入后新建一个job 4.Source Code ...

  3. 领域驱动模型DDD(一)——服务拆分策略

    前言 领域驱动模型设计在业界也喊了几年口号了,但是对于很多"务实"的程序员来说,纸上谈"术"远比敲代码难得太多太多.本人能力有限,在拜读相关作品时既要隐忍书中晦 ...

  4. 记-Golang获取本机IP及快速搭建局域FTP

    1 package main 2 3 import ( 4 "fmt" 5 "net" 6 "net/http" 7 "strin ...

  5. mybatis是如何分页的,分页插件的原理是什么

    mybatis是如何分页的,分页插件的原理是什么 代码之尖关注 12018.12.28 17:11:12字数 529阅读 19,877 1. SQL 分页 <select id="qu ...

  6. 为什么操作 DOM 慢?

    DOM本身是一个js对象, 操作这个对象本身不慢, 但是操作后触发了浏览器的行为, 如repaint和reflow等浏览器行为, 使其变慢

  7. 什么是原子操作?在 Java Concurrency API 中有哪些原 子类(atomic classes)?

    原子操作(atomic operation)意为"不可被中断的一个或一系列操作" . 处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作. 在 Java 中可以通 ...

  8. Error 和 Exception 有什么区别?

    Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情 况下的一种严重问题:比如内存溢出,不可能指望程序能处理这样的情况: Exception 表示需要捕捉或者需要程序进行处理 ...

  9. 简单描述 MySQL 中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响(从读写两方面) ?

    索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用指针. 普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的 ...

  10. 说出 JDK 1.7 中的三个新特性?

    虽然 JDK 1.7 不像 JDK 5 和 8 一样的大版本,但是,还是有很多新的特性, 如 try-with-resource 语句,这样你在使用流或者资源的时候,就不需要手动关 闭,Java 会自 ...