51Nod-1962-区间计数
来源:互联网 发布:mac qq音乐退出登录 编辑:程序博客网 时间:2024/06/09 15:36
ACM模版
描述
题解
官方题解:
代码
#include <iostream>#define mp make_pairusing namespace std;typedef long long ll;typedef pair<int, int> pii;template <class T>inline void scan_d(T &ret){ char c; ret = 0; while ((c = getchar()) < '0' || c > '9'); while (c >= '0' && c <= '9') { ret = ret * 10 + (c - '0'), c = getchar(); }}const int MAXN = 4e5;int N, now;pii p[MAXN], q[MAXN];int A[MAXN], B[MAXN];int ra[MAXN], rb[MAXN];ll ans;int ins(pii x, pii 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(){ scan_d(N); for (int i = 1; i <= N; i++) { scan_d(A[i]); } for (int i = 1; i <= N; i++) { scan_d(B[i]); } for (int 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 (int i = 1; i <= N; i = ra[i]) { p[A[i]] = mp(i, ra[i] - 1); } for (int i = 1; i <= N; i = rb[i]) { q[B[i]] = mp(i, rb[i] - 1); now += ins(p[B[i]], q[B[i]]); } for (int i = 1; i <= N; i++) { ans += now; now -= ins(p[A[i]], q[A[i]]); p[A[i]] = mp(0, 0); if (A[i] != B[i]) { now -= ins(p[B[i]], q[B[i]]); q[B[i]] = mp(0, 0); } for (int j = i + 1; j < ra[i]; j = ra[j]) { p[A[j]] = mp(j, ra[j] - 1); now += ins(p[A[j]], q[A[j]]); } for (int j = i + 1; j < rb[i]; j = rb[j]) { q[B[j]] = mp(j, rb[j] - 1); now += ins(p[B[j]], q[B[j]]); } } printf("%lld\n", ans); return 0;}
阅读全文
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 最小公倍数计数
- OpenCV 3.2.0 + opencv_contrib编译(Windows)
- MySQL5.7.18 安装时遇到的坑以及解决方案
- 卷积操作中的矩阵乘法(gemm)—— 为什么矩阵乘法是深度学习的核心所在
- C++中vector可以作为map的键值
- springboot热部署
- 51Nod-1962-区间计数
- android stdio技巧
- CSS3 线性渐变(linear-gradient)
- 【bzoj4826】影魔(线段树+单调栈+扫描线)
- 用g++编译生成动态连接库*.so的方法及连接
- Intent.ACTION_GET_CONTENT和Intent.ACTION_PICK的使用区别
- hadoop配置启动historyserver
- InnoDB中Cardinality介绍
- synchronized修饰静态方法和普通方法有什么区别