博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【笔记】康拓展开&逆康拓展开
阅读量:5217 次
发布时间:2019-06-14

本文共 830 字,大约阅读时间需要 2 分钟。

参考资料

代码

/* * 康拓展开树状数组优化O(nlogn)  * 给一个排列,返回排列的排名 */#include
using namespace std;typedef long long ll;const int MOD=1e9+7,N=1e5+5;int sum[N],n,a[N];ll jc[N];int lowbit(int x){ return x&-x;}void add(int x,int k){ while(x <= n){ sum[x]=sum[x]+k; x=x+lowbit(x); }}int getsum(int x){ int ans=0; while(x>=1){ ans=ans+sum[x]; x=x-lowbit(x); } return ans;}void solve(){ ll rank=1; for(int i=1;i<=n;i++){ add(a[i],1); int k=getsum(a[i]-1); k=(a[i]-1)-k; rank = (rank + (k*jc[n-i])) %MOD; } printf("%lld\n",rank);}int main(){ jc[1]=1; for(int i=2;i<=N;i++){ jc[i]=jc[i-1]*i%MOD; } int _; scanf("%d",&_); while(_--) { memset(sum,0,sizeof(sum)); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); solve(); }}

  

转载于:https://www.cnblogs.com/greenty1208/p/9727221.html

你可能感兴趣的文章
Python-Mac 安装 PyQt4
查看>>
P2571 [SCOI2010]传送带
查看>>
哈希表1
查看>>
用Data Url (data:image/jpg;base64,)将小图片生成数据流形式
查看>>
实验2-2
查看>>
C#初识
查看>>
String,StringBuffer与StringBuilder的区别?? .
查看>>
JavaScript(三) 数据类型
查看>>
移动端rem布局屏幕适配插件(放js中便可使用)
查看>>
Docker
查看>>
bzoj2259 [Oibh]新型计算机
查看>>
对位与字节的深度认识
查看>>
C++编程基础二 16-习题4
查看>>
MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
查看>>
服务器被疑似挖矿程序植入107.174.47.156,发现以及解决过程(建议所有使用sonatype/nexus3镜像的用户清查一下)...
查看>>
JQuery 学习
查看>>
session token两种登陆方式
查看>>
C# ArrayList
查看>>
IntelliJ IDEA 12集成Tomcat 运行Web项目
查看>>
java,多线程实现
查看>>