博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ2299 逆序数
阅读量:6441 次
发布时间:2019-06-23

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

传送门@百度。。

treap好久没写果然有点生疏了,注意答案是long long

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 using namespace std;10 const int N = 500010;11 #define Ch1 (T[i].s[0])12 #define Ch2 (T[i].s[1])13 #define For(i,n) for(int i=1;i<=n;i++)14 #define Rep(i,l,r) for(int i=l;i<=r;i++)15 16 void read(int &v){17 char ch=getchar();18 int num=0;19 while(ch>'9'||ch<'0') ch=getchar();20 while(ch>='0'&&ch<='9'){21 num=num*10+ch-'0';22 ch=getchar();23 }24 v=num;25 }26 27 struct treap{28 int v,size,pri;29 int s[2];30 void Sets(int x,int y){v=x;pri=y;size=1;}31 }T[N];32 33 int n,x,cnt,root;34 long long ans;35 36 void Update(int i){37 T[i].size=T[Ch1].size+T[Ch2].size+1;38 }39 40 void Rot(int &y,int f){41 int x=T[y].s[!f];42 T[y].s[!f]=T[x].s[f];43 T[x].s[f]=y;44 Update(y);Update(x);45 y=x;46 }47 48 void Insert(int &i,int x){49 if(!i){50 T[i=++cnt].Sets(x,rand());51 T[i].s[0]=T[i].s[1]=0;52 return;53 }54 int f=T[i].v>x;55 Insert(T[i].s[!f],x);56 if(T[T[i].s[!f]].pri>T[i].pri) Rot(i,f);57 else Update(i); 58 }59 60 int find(int i,int x){61 if(T[i].v==x) return T[Ch1].size+1;62 if(T[i].v
x) return find(Ch1,x);64 }65 66 int main(){67 while(read(n),n){68 ans=0;69 cnt=root=0;70 For(i,n){71 read(x);72 Insert(root,x); 73 ans+=i-(find(root,x)); 74 }75 cout<
<

 

转载于:https://www.cnblogs.com/zjdx1998/p/4073695.html

你可能感兴趣的文章
【CT】四、Turing Machines(2)
查看>>
【matlab】plot
查看>>
Kafka生产者APi
查看>>
有关计算机组成的分享~
查看>>
梳理回顾
查看>>
基于开源Dubbo分布式RPC服务框架的部署整合
查看>>
用C#实现智能设备上的NotifyIcon类
查看>>
HDU-2602-Bone Collector
查看>>
vs 2017 IIS EXPRESS 增加局域网访问
查看>>
POJ-2456 Aggressive cows---最大化最小值(也就是求最大值)
查看>>
解决WinSock中发送、接收多包问题
查看>>
CMDB资产管理系统开发:需求分析
查看>>
WebKit源代码里的RefPtr智能指针
查看>>
前端异常采集
查看>>
hadoop day 5
查看>>
责任声明和转载声明 .
查看>>
Linux curl命令详解
查看>>
(转载)使用exp进行SQL报错注入
查看>>
[Big Data - Codis, Mycat(cobar)] 企业互联网+转型实战:如何进行PB级别数据的架构变迁...
查看>>
web前端优化之reflow(减少页面的回流)
查看>>