遇到了RE不可战胜,蒟蒻求调
查看原帖
遇到了RE不可战胜,蒟蒻求调
1569314
__LiuXi__楼主2025/6/17 17:39
#include<bits/stdc++.h>
using namespace std;
#define int long long	
int n; int A[100001];
map<int,int>mp;map<int,string>ifn; vector<int>F[100001];
int cnt=0;int q;
int Gp(int p,int x){
	if(F[p][0]>x)return 0;
	if(F[p][F[p].size()-1]<=x)return F[p].size();
	int l=0,r=F[p].size()-1,answer;
	while(l<=r){
		int mid=(l+r)>>1;
		if(F[p][mid]<=x){
			l=mid+1; answer=mid+1;
		}
		else r=mid-1;
	}
	return answer;
}
signed main(){
	int T;
	scanf("%lld",&T);
	for(int j=1;j<=T;j++){
		for(int k=1;k<=100001;k++)F[k].clear();
		scanf("%lld",&n);
		for(int i=1;i<=n;i++) scanf("%lld",&A[i]);
		for(int i=1;i<=n;i++){
			if(ifn[A[i]]!="rt")ifn[A[i]]="rt",mp[A[i]]=++cnt;
			F[mp[A[i]]].push_back(i);
		}	
		scanf("%lld",&q);
		for(int i=1;i<=q;i++){
			int l,r,x; scanf("%lld%lld%lld",&l,&r,&x);
			if(mp[x]==0){
				printf("0\n"); continue;
			}
			int num1;
            if(l!=1)num1=Gp(mp[x],l-1);
            else num1=0;
            int num2=Gp(mp[x],r);
			printf("%lld\n",num2-num1);
		}			
	}

	return 0;
}
2025/6/17 17:39
加载中...