Solved:4
Rank:143
A Equivalent Prefixes
题意:求一个最大的r满足在A,B两个数组中1,r里所有的子区间RMQ相等
题解:单调队列秒
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include <bits/stdc++.h> using namespace std; int n; int q[100005]; int w[100005]; int que[100005]; int main() { while(~scanf("%d", &n)) { for(int i = 1; i <= n; i++) scanf("%d", &q[i]); for(int i = 1; i <= n; i++) scanf("%d", &w[i]); int l = 1, r = 0; int ans = n; for(int i = 1; i <= n; i++) { while(l <= r && q[i] < q[que[r]] && w[i] < w[que[r]]) r--; if(l > r) que[++r] = i; else if(q[i] > q[que[r]] && w[i] > w[que[r]]) { que[++r] = i; } else { ans = i - 1; break; } } printf("%d\n", ans); } return 0; }