题目描述

You are given two permutations pp and qq , consisting of nn elements, and mm queries of the form: l_{1},r_{1},l_{2},r_{2}l1​,r1​,l2​,r2​ $ (l_{1}<=r_{1}; l_{2}<=r_{2}) $ . The response for the query is the number of such integers from 11 to nn , that their position in the first permutation is in segment [l_{1},r_{1}][l1​,r1​] (borders included), and position in the second permutation is in segment [l_{2},r_{2}][l2​,r2​](borders included too).

A permutation of nn elements is the sequence of nn distinct integers, each not less than 11 and not greater than nn .

Position of number vv (1<=v<=n)(1<=v<=n) in permutation g_{1},g_{2},...,g_{n}g1​,g2​,...,gn​ is such number ii , that g_{i}=vgi​=v .

输入输出格式

输入格式:

The first line contains one integer n\ (1<=n<=10^{6})n (1<=n<=106) , the number of elements in both permutations. The following line contains nn integers, separated with spaces: p_{1},p_{2},...,p_{n}\ (1<=p_{i}<=n)p1​,p2​,...,pn​ (1<=pi​<=n) . These are elements of the first permutation. The next line contains the second permutation q_{1},q_{2},...,q_{n}q1​,q2​,...,qn​ in same format.

The following line contains an integer m\ (1<=m<=2·10^{5})m (1<=m<=2⋅105) , that is the number of queries.

The following mm lines contain descriptions of queries one in a line. The description of the ii -th query consists of four integers: a,b,c,d\ (1<=a,b,c,d<=n)a,b,c,d (1<=a,b,c,d<=n) . Query parameters l_{1},r_{1},l_{2},r_{2}l1​,r1​,l2​,r2​ are obtained from the numbers a,b,c,da,b,c,dusing the following algorithm:

  1. Introduce variable xx . If it is the first query, then the variable equals 00 , else it equals the response for the previous query plus one.
  2. Introduce function f(z)=((z-1+x)\ mod\ n)+1f(z)=((z−1+x) mod n)+1 .
  3. Suppose l_{1}=min(f(a),f(b)),r_{1}=max(f(a),f(b)),l_{2}=min(f(c),f(d)),r_{2}=max(f(c),f(d))l1​=min(f(a),f(b)),r1​=max(f(a),f(b)),l2​=min(f(c),f(d)),r2​=max(f(c),f(d)) .

输出格式:

Print a response for each query in a separate line.

输入输出样例

输入样例#1:

3
3 1 2
3 2 1
1
1 2 3 3
输出样例#1:

1
输入样例#2:

4
4 3 2 1
2 3 4 1
3
1 2 3 4
1 3 2 1
1 4 2 3
输出样例#2:

1
1
2 把第二个排列的数在第一个排列中对应的位置记一下,主席树跑一跑就行了。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<cstring>
#define ll long long
#define maxn 1000005
using namespace std;
struct node{
node *lc,*rc;
int s;
}nil[maxn*30],*rot[maxn],*cnt;
int a[maxn],n,ky,num[maxn];
int m,le,ri,k,preans=-1,ple,pri;
char ch; inline int add(int x,int y,const int ha){
return (x+y)%ha;
} node *update(node *u,int l,int r){
node *ret=++cnt;
*ret=*u;
ret->s++; if(l==r) return ret; int mid=l+r>>1;
if(le<=mid) ret->lc=update(ret->lc,l,mid);
else ret->rc=update(ret->rc,mid+1,r); return ret;
} int query(node *u,node *v,int l,int r){
if(l>=le&&r<=ri) return v->s-u->s; int mid=l+r>>1,an=0;
if(le<=mid) an+=query(u->lc,v->lc,l,mid);
if(ri>mid) an+=query(u->rc,v->rc,mid+1,r);
return an;
} inline void prework(){
cnt=rot[0]=nil->lc=nil->rc=nil;
nil->s=0; for(int i=1;i<=n;i++){
le=a[i];
rot[i]=update(rot[i-1],1,n);
}
} inline void solve(){
scanf("%d",&m);
while(m--){
scanf("%d%d%d%d",&le,&ri,&ple,&pri); le=add(le,preans,n)+1;
ri=add(ri,preans,n)+1;
ple=add(ple,preans,n)+1;
pri=add(pri,preans,n)+1;
if(le>ri) swap(le,ri);
if(ple>pri) swap(ple,pri); preans=query(rot[ple-1],rot[pri],1,n);
printf("%d\n",preans);
}
} int main(){
scanf("%d",&n);
int now;
for(int i=1;i<=n;i++){
scanf("%d",&now);
num[now]=i;
}
for(int i=1;i<=n;i++){
scanf("%d",&now);
a[i]=num[now];
} prework();
solve(); return 0;
}

  


Codeforces 323C Two permutations的更多相关文章

  1. Codeforces 1089I - Interval-Free Permutations(析合树计数)

    Codeforces 题面传送门 & 洛谷题面传送门 首先题目中涉及排列的 interval,因此可以想到析合树.由于本蒟蒻太菜了以至于没有听过这种神仙黑科技,因此简单介绍一下这种数据结构:我 ...

  2. codeforces Gargari and Permutations(DAG+BFS)

    /* 题意:求出多个全排列的lcs! 思路:因为是全排列,所以每一行的每一个数字都不会重复,所以如果有每一个全排列的数字 i 都在数字 j的前面,那么i, j建立一条有向边! 最后用bfs遍历整个图, ...

  3. Codeforces 382 D Permutations

    题目大意: 给出一张二分图,这张二分图完美匹配的个数是奇数,求删掉第$i(1<=i<=m)$条边后完美匹配个数的奇偶性. 设这张图的邻接矩阵为$A$,那么完美匹配的个数为$A$的积和式,即 ...

  4. CodeForces - 296A-Yaroslav and Permutations(思维)

    Yaroslav has an array that consists of n integers. In one second Yaroslav can swap two neighboring a ...

  5. Codeforces Round #485 (Div. 2) E. Petr and Permutations

    Codeforces Round #485 (Div. 2) E. Petr and Permutations 题目连接: http://codeforces.com/contest/987/prob ...

  6. Codeforces 285 E. Positions in Permutations

    \(>Codeforces \space 285 E. Positions in Permutations<\) 题目大意 : 定义一个长度为 \(n\) 的排列中第 \(i\) 个元素是 ...

  7. Codeforces Round #198 (Div. 2) E. Iahub and Permutations —— 容斥原理

    题目链接:http://codeforces.com/contest/340/problem/E E. Iahub and Permutations time limit per test 1 sec ...

  8. 贪心 CodeForces 124B Permutations

    题目传送门 /* 贪心:全排列函数使用,更新最值 */ #include <cstdio> #include <algorithm> #include <cstring& ...

  9. Codeforces Round #337 Alphabet Permutations

    E. Alphabet Permutations time limit per test:  1 second memory limit per test:  512 megabytes input: ...

随机推荐

  1. 3、CSS基础 part-1

    1.给body设置颜色 <html> <body text="red"> <p> hello world</p> <p> ...

  2. 【Decode Ways】cpp

    题目: A message containing letters from A-Z is being encoded to numbers using the following mapping: ' ...

  3. 使用android-junit-report.jar导出单元测试报告

    Android在使用脚本编译和测试时,使用默认的testrunner不会输出文件类型的单元测试报告,每次只能分析logcat的无法直观的看到单元测试结果和报告,这给编写自动化脚本带来了不少麻烦,虽然可 ...

  4. Python-S9-Day126——Scrapy爬虫框架

    01 今日内容概要 02 内容回顾和补充:scrapy 03 内容回顾和补充:网络和并发编程 04 Scrapy爬虫框架:pipeline做持久化(一) 05 Scrapy爬虫框架:pipeline做 ...

  5. day05_07 标志位讲解

    continue: 需求:大于5才打印 for i in range(10): if i<6 : continue print(i) continue作用:结束本次循环,继续下次循环 break ...

  6. TopK-微博今日热门话题

    大纲 TopK on single node TopK on multiple nodes Realtime topK with low QPS Realtime topK with high QPS ...

  7. ValueStack 源码

    /* * Copyright 2002-2007,2009 The Apache Software Foundation. * * Licensed under the Apache License, ...

  8. tcp协议 tcpip协议 http协议,IP,DNS,端口号

    每当看到HTTP协议,tcp/ip协议,TCP协议总是蒙圈:在这里先记录一下,方面自己查看 TCP协议:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接 ...

  9. P4555 最长双回文串

    题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同). 输入长度为 n的串 S ,求 S的最长双回文子串 T ,即可将 ...

  10. 计数(count)

    计数(count) 题目描述 既然是萌萌哒 visit_world 的比赛,那必然会有一道计数题啦! 考虑一个 NN个节点的二叉树,它的节点被标上了 1∼N1∼N 的编号. 并且,编号为 ii的节点在 ...