HACK数据T了,求助!!!!
查看原帖
HACK数据T了,求助!!!!
1049051
JiuZhE66666楼主2024/1/15 01:18
#include<bits/stdc++.h>
using namespace std;
int pure[400005];
set<int> color;
void tuse(int node,int start,int end,int l,int r,int k)
{
    if(start>r||end<l)return;
    if(start>=l&&end<=r)
    {
        pure[node]=k;
        return;
    }
    else
    {
        if(pure[node])
        {
            pure[node*2]=pure[node];
            pure[node*2+1]=pure[node];
            pure[node]=0;
        }
        if(start!=end)
        {
            int mid=(start+end)/2;
            tuse(node*2,start,mid,l,r,k);
            tuse(node*2+1,mid+1,end,l,r,k);
        }
    }
}

void query(int node,int start,int end,int l,int r)
{
    if(start>r||end<l)return;
    if(start>=l&&end<=r&&pure[node]) color.insert(pure[node]);
    else
    {
        if(pure[node])
        {
            pure[node*2]=pure[node];
            pure[node*2+1]=pure[node];
            pure[node]=0;
        }
        if(start!=end)
        {
            int mid=(start+end)/2;
            query(node*2,start,mid,l,r);
            query(node*2+1,mid+1,end,l,r);
        }
    }
}
int main()
{
    ios::sync_with_stdio(false);
    int l,t,o;
    cin>>l>>t>>o;
    for(int i=1;i<=4*l;i++)pure[i]=1;
    while(o--)
    {
        char op;
        cin>>op;
        if(op=='C')
        {
            int x,y,k;
            cin>>x>>y>>k;
            if(y<x)swap(x,y);
            tuse(1,1,l,x,y,k);
        }
        else
        {
            int x,y;
            cin>>x>>y;
            if(y<x)swap(x,y);
            query(1,1,l,x,y);
            cout<<color.size()<<endl;
            color.clear();
        }
    }
    return 0;
}
2024/1/15 01:18
加载中...