灵异事件,求条
查看原帖
灵异事件,求条
1346586
zzwdsj楼主2025/8/1 21:05
#include<bits/stdc++.h>
using namespace std;
int n,q,B,l1,r1,l2,r2,l3,r3,a[100005],p[100005];
struct question
{
    int l,r,id;
    bool operator<(const question t)const
    {
        if((l/B)^(t.l/B))return l<t.l;
        if((l/B)&1)return r<t.r;
        else return r>t.r;
    }
}ask[300005];
bitset<100005>s,t[40000];
int ans[200005],sum[200005];
inline void add(int x){s[x+sum[x]]=1;++sum[x];}
inline void del(int x){--sum[x];s[x+sum[x]]=0;}
inline void solve()
{
    int tot=0;
    for(int i=1;i<40000&&q;i++)
    {
        q--;
        cin>>l1>>r1>>l2>>r2>>l3>>r3;
        ask[++tot]={l1,r1,i},ask[++tot]={l2,r2,i},ask[++tot]={l3,r3,i};
        t[i].set();
        assert(t[i].count());
    }
    assert(t[1].count());
    B=n/sqrt(tot);
    sort(ask+1,ask+tot+1);
    s.reset();
    memset(sum,0,sizeof sum);
    for(int i=1,l=1,r=0;i<=tot;i++)
    {
        while(l>ask[i].l)l--,add(a[l]);
        while(r<ask[i].r)r++,add(a[r]);
        while(l<ask[i].l)del(a[l]),l++; 
        while(r>ask[i].r)del(a[r]),r--;
        ans[ask[i].id]+=r-l+1;
        t[ask[i].id]&=s;
        assert(!t[ask[i].id].count());
        cout<<"*"<<l<<" "<<r<<" "<<s.count()<<" "<<ask[i].id<<endl;
    }
    for(int i=1;i<=tot/3;i++)cout<<ans[i]-3*t[i].count()<<endl;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>q;
    for(int i=1;i<=n;i++)cin>>a[i],p[i]=a[i];
    for(int i=1;i<=n;i++)a[i]=lower_bound(p+1,p+n+1,a[i])-a;
    solve(),solve(),solve();
    return 0;
}```
为什么代码在第29行报错,但在第27行不报错?
2025/8/1 21:05
加载中...