51nod 1962 区间计数
来源:互联网 发布:少女时代知乎话题 编辑:程序博客网 时间:2024/06/08 00:00
#include<bits/stdc++.h>using namespace std;const int MAXN=400400;pair<int,int> p[MAXN],q[MAXN];int a[MAXN],b[MAXN],ra[MAXN],rb[MAXN];int ins(pair<int,int> x,pair<int,int> y)//计算区间并的大小 {if(x.second>y.second)swap(x,y);if(x.second<y.first)return 0;return x.second-max(x.first,y.first)+1;}int main(){int n,i,j;long long now,ans;while(~scanf("%d",&n)){for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=1;i<=n;i++)scanf("%d",&b[i]);for(i=n;i>=1;i--){for(ra[i]=i+1;ra[i]<=n&&a[ra[i]]<=a[i];ra[i]=ra[ra[i]]);for(rb[i]=i+1;rb[i]<=n&&b[rb[i]]<=b[i];rb[i]=rb[rb[i]]);}for(i=1;i<=n;i=ra[i]){p[a[i]]=make_pair(i,ra[i]-1);}now=0;for(i=1;i<=n;i=rb[i]){q[b[i]]=make_pair(i,rb[i]-1);now+=ins(p[b[i]],q[b[i]]);}ans=0;for(i=1;i<=n;i++){ans+=now;now-=ins(p[a[i]],q[a[i]]);p[a[i]]=make_pair(0,0);if(a[i]!=b[i]){now-=ins(p[b[i]],q[b[i]]);q[b[i]]=make_pair(0,0);}for(j=i+1;j<ra[i];j=ra[j]){p[a[j]]=make_pair(j,ra[j]-1);now+=ins(p[a[j]],q[a[j]]);}for(j=i+1;j<rb[i];j=rb[j]){q[b[j]]=make_pair(j,rb[j]-1);now+=ins(p[b[j]],q[b[j]]);}}printf("%lld\n",ans);}}
阅读全文
0 0
- 51Nod-1962-区间计数
- 51nod 1962 区间计数
- 单调栈 51nod 1962 区间计数
- [分治] 51nod 算法马拉松25 C. 区间计数
- 集合计数 51Nod
- 【51Nod1962】区间计数
- 51nod 1352:集合计数
- 51nod-1682 中位数计数
- 51nod 1352 集合计数
- 51nod 1682 中位数计数
- 51Nod 1352 集合计数
- 【51Nod 1610】路径计数
- [51nod 1222]最小公倍数计数
- [51nod 1222]最小公倍数计数
- 51NOD 1682 中位数计数
- 【51NOD 1222】最小公倍数计数
- 51nod-1682 中位数计数
- 51 nod 1222 最小公倍数计数
- 电话号码正则表达式
- iptables & physdev-is-in & physdev-is-out -- net.bridge.bridge-nf-call-iptables对Netfilter中数据包的影响
- 华为软件开发云发布管理测评报告
- word2vec简要教程
- POJ 3179 Corral the Cows 笔记
- 51nod 1962 区间计数
- 解决按Home键后再点击icon图标程序重新启动问题
- 面向对象程序设计六大原则-里氏替换原则
- Ubuntu 在更改错误路径之后,导致终端命令行失效
- DevOps工程师成长秘籍
- init.rc的语法分析
- 使用composer安装Laravel
- Hadoop好友推荐系统-用户距离计算
- 自拍仪开发:TypeEror:对象不支持此属性或者方法