传送门

分析

记录区间最大值,线段树上二分找比这个点大的最靠前位置即可

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
int Ans,d[];
long long tot;
inline void update(int le,int ri,int wh,int pl,int k){
if(le==ri){
d[wh]=k;
return;
}
int mid=(le+ri)>>;
if(mid>=pl)update(le,mid,wh<<,pl,k);
else update(mid+,ri,wh<<|,pl,k);
d[wh]=max(d[wh<<],d[wh<<|]);
}
inline void q(int le,int ri,int wh,int x,int y,int k){
if(x>y)return;
if(le==ri){
Ans=le;
return;
}
int mid=(le+ri)>>;
if(mid>=x&&d[wh<<]>k)q(le,mid,wh<<,x,y,k);
if(Ans>mid&&mid<y&&d[wh<<|]>k)q(mid+,ri,wh<<|,x,y,k);
}
int main(){
int n,m,i,j,k;
scanf("%d",&n);
for(i=;i<=n;i++){
int x;
scanf("%d",&x);
Ans=i;
q(,n,,,i-,x);
tot+=(i-Ans);
update(,n,,i,x);
}
printf("%lld\n",tot);
return ;
}

最新文章

  1. c3p0数据库连接池的使用详解
  2. 脚本工具: 查看当前系统被写入的FD
  3. ios 转发一篇对于6 plus的分辨率模式的说明
  4. 【Android测试】【第十七节】Instrumentation——App任你摆布(反射技术的引入)
  5. 九个uname命令获取Linux系统详情的实例
  6. ARM启动流程
  7. android资料
  8. Nuget升级问题
  9. UI----安健2 UIswitch UIslider
  10. 进程间通信系列 之 命名管道FIFO及其应用实例
  11. 【CentOS】php编译安装gd库
  12. Ubuntu安装JDK与环境变量配置
  13. RHEL6下获取安装包(RPM)而不安装的方法
  14. TextView图文混排
  15. 在linux系统中实现各项监控的关键技术(2)--内核态与用户态进程之间的通信netlink
  16. Python复习笔记(六)网络编程(udp/tcp)
  17. 关于vue2.0 cnpm 镜像安装
  18. HDU 2841-Visible Trees 【容斥】
  19. CF643D Bearish Fanpages
  20. linux中守护进程启停工具start-stop-daemon

热门文章

  1. hive_学习_00_资源帖
  2. nyoj-78-圈水池(Graham算法求凸包)
  3. poj2263 zoj1952 Heavy Cargo(floyd||spfa)
  4. PKUSC2018 Slay The Spire
  5. NOI模拟赛 #4
  6. LeetCode Sum of Square Numbers
  7. Linux安装搜狗拼音输入法-sogoupinyin
  8. bzoj 2982 combination——lucas模板
  9. eclipse -- propedit 安装.
  10. 四、ABP 学习系列 - 配置Swagger