• bzoj2120


    题解:

    可修改莫队

    我们加入一个时间T

    然后在排序的时候考虑一下时间

    在计算的时候也要考虑

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=100005;
    struct Query
    {
        int l,r,Tim,id;
    }q[N];
    struct Change
    {
        int pos,New,Old;
    }c[N];
    char sign[3];
    int n,m,s[N],color[N*100],t,x,y,Time,now[N],unit,Be[N],ans[N],Ans,l=1,r,T;
    int cmp(Query a,Query b)
    {
        if (Be[a.l]!=Be[b.l])return a.l<b.l;
        if (Be[a.r]!=Be[b.r])return a.r<b.r;
        return a.Tim<b.Tim;
    }
    void revise(int x,int d)
    {
        color[x]+=d;
        if (d>0)Ans+=color[x]==1;
        if (d<0)Ans-=color[x]==0;
    }
    void doit(int x,int d)
    {
        if (l<=x&&x<=r)
         {
             revise(d,1);
             revise(s[x],-1);
         }
        s[x]=d; 
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        int unit=pow(n,0.666666);
        for (int i=1;i<=n;i++)
         {
             scanf("%d",&s[i]);
             now[i]=s[i];
             Be[i]=i/unit+1;
         }
        for (int i=1;i<=m;i++)
         {
             scanf("%s%d%d",&sign,&x,&y);
             if (sign[0]=='Q')q[++t]=(Query){x,y,Time,t};
             if (sign[0]=='R')c[++Time]=(Change){x,y,now[x]},now[x]=y;
         } 
        sort(q+1,q+t+1,cmp);
        for (int i=1;i<=t;i++)
         {
             while (T<q[i].Tim)doit(c[T+1].pos,c[T+1].New),T++;
             while (T>q[i].Tim)doit(c[T].pos,c[T].Old),T--;
            while (l<q[i].l)revise(s[l],-1),l++;
            while (l>q[i].l)revise(s[l-1],1),l--;
            while (r<q[i].r)revise(s[r+1],1),r++;
            while (r>q[i].r)revise(s[r],-1),r--;
            ans[q[i].id]=Ans;
         } 
        for (int i=1;i<=t;i++)printf("%d
    ",ans[i]); 
    }
  • 相关阅读:
    Markdown简介
    主动安全协议-广东标准(粤标)和江苏标准(苏标)的区别及平台开发
    机动车驾驶员计时培训系统平台技术规范
    DevOps 之路
    allinaws
    Dockerfile-For-Python
    Mac 添加vmware fusion nat网卡信息
    AWS 使用S3为Web站点
    AWS ALB实现80端口跳转443端口
    深入理解Service
  • 原文地址:https://www.cnblogs.com/xuanyiming/p/8439431.html
Copyright © 2020-2023  润新知