求调
查看原帖
求调
964822
protractor半圆仪楼主2024/8/24 19:59

WA on #1 #2 #2
TLE on #4 #5 #6 #7 #8 #9 #10
有人帮忙看一下吗,谢谢

#include<iostream>
#include<cstring>
#include<map>
#include<algorithm>
using namespace std;
struct modui{
    int l,r,x,id;
}c[100050];
int a[100050];
int b[100050],cnt;
int d[100050];
int ans[100050];
int n,q;
bool cmp(modui x,modui y)
{
    if(x.l==y.l) return x.r<=y.r;
    return x.l<y.l;
}
void mn()
{
	map<int,int> mp;
	memset(d,0,sizeof(d));
    cnt=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        b[i]=a[i];
    }
    sort(b+1,b+n+1);
    for(int i=1;i<=n;i++)
    {
        if(b[i]!=b[i-1]) mp[b[i]]=++cnt;
    }
    for(int i=1;i<=n;i++)
    {
        a[i]=mp[a[i]];
    }
    //for(int i=1;i<=n;i++) cout<<i<<':'<<a[i]<<'\n';
	//cout<<'\n'; 
    cin>>q;
    for(int i=1;i<=q;i++)
    {
        cin>>c[i].l>>c[i].r>>c[i].x;
        c[i].x=mp[c[i].x];
        c[i].id=i;
    }
    sort(c+1,c+q+1,cmp);
    int ll=0,rr=0;
    for(int i=1;i<=q;i++)
    {
        while(rr<c[i].r)
        {
            d[a[++rr]]++;
        }
        while(rr>c[i].r)
        {
            d[a[--rr]]--;
        }
        while(ll<c[i].l-1)
        {
            d[a[++ll]]--;
        }
        //cout<<c[i].id<<' '<<c[i].l<<' '<<c[i].r<<' '<<c[i].x<<' '<<d[c[i].x]<<'\n';
        ans[c[i].id]=d[c[i].x];
    }
    for(int i=1;i<=q;i++) cout<<ans[i]<<'\n'; 
}
int main()
{
    int t;
    cin>>t;
    while(t--) mn();
    return 0;
}
2024/8/24 19:59
加载中...