题目大意

题意

分析

问一个集合是否相同可以用 元素的立方和 表示这个集合

本质上是 hash

处理一下询问即可

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
int cal(int x) {return x*x*x;}

signed main()
{
_orz;
int n;
cin>>n;
vector<int> a(n+1),b(n+1);
vector<int> s1(n+1),s2(n+1);
map<int,int> mp;
for(int i = 1;i <= n;i++) cin >> a[i];
for(int i = 1;i <= n;i++) cin >> b[i];

for(int i = 1;i <= n;i++){
if(!mp[a[i]]){
s1[i] = s1[i-1] + cal(a[i]);
mp[a[i]] = 1;
}
else s1[i] = s1[i-1];
}

mp.clear();
for(int i = 1;i <= n;i++){
if(!mp[b[i]]){
s2[i] = s2[i-1] + cal(b[i]);
mp[b[i]] = 1;
}
else s2[i] = s2[i-1];
}
int q;cin>>q;
while(q--){
int l,r;
cin>>l>>r;
if(s1[l] == s2[r]) puts("Y");
else puts("N");
}
return 0;
}