#include <iostream>
using namespace std;
int n, m, l, r, num;
short a[11451][1145];
void build_chart() {//建表
cin >> n;
int tmp;
for (int i = 1; i <= n; ++i) {
cin >> tmp;
a[tmp][++a[tmp][0]] = i;
}
return;
}
void search_chart() {//查表
cin >> m;
int ans = 0;
while (m--) {
cin >> l >> r >> num;
if (a[num][a[num][0]] < l)
cout << "0" << endl;
else {
for (int i = 1; i <= a[num][0]; ++i) {
if (a[num][i] >= l && a[num][i] <= r)
ans++;
}
cout << ans << endl;
}
}
}
int main() {
int cnt;
cin >> cnt;
while (cnt--) {
build_chart();
search_chart();
for(int i=1;i<=1145;++i){
if(a[i][0]!=0 ){
for(int j=a[i][0];j>=0;--j)a[i][j]=0;//删除本次的表以便于建立新表
}
}
}
return 0;
}
我的想法是,实现读入的时候将数字出现的位置存在一个a里面,然后后期查表,但是蘜蒻不会用vector和map(更别说莫队或者线段树了),会RE或MLE,但是我的代码只能过样例,所以弱小的我错在哪里