• 爆零专场


    总分 60+15+0=75 rank5
    T1想主席树套树状数组,死活调不出来,后来发现内存炸了
    交的30暴力+30静态主席树
    T2暴力O(n4)加减枝 15
    T3 真心不会
    目前只改了T1
    正解:因为异或了opt,所以反解答案。。。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #define N 200005
    using namespace std;
    
    int prime[100005],tot,id[1000005];
    bool vis[1000005];
    void init(){
        for(int i=2;i<=1000000;i++){
            if(!vis[i]){prime[++tot]=i;id[i]=tot;}
            for(int j=1;j<=tot&&i*prime[j]<=1000000;j++){
                vis[i*prime[j]]=1;
                if(i%prime[j]==0)break;
            }
        }
    }
    
    int n,m,k,a[200005],b[200005];
    bool bo;
    int main(){
        init();
        scanf("%d%d%d",&n,&k,&m);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        int opt,l,r,ans=0,lo,ll,lr;
        while(m--){
            scanf("%d%d%d",&opt,&l,&r);
            if(bo){
                if(id[opt^1])ans=opt^1;
                else ans=opt^2;
                printf("%d
    ",ans);
                bo=0;
            }
            opt^=ans; l^=ans; r^=ans;
            if(opt==1){bo=1;lo=opt;ll=l;lr=r;}
            if(opt==2){a[l]=r;}
        }
        if(bo){
            int len=lr-ll+1,num=0;
            for(int i=1;i<=len;i++)b[i]=a[ll+i-1];
            sort(b+1,b+len+1);
            for(int i=1;i<=len;i++){
                if(id[b[i]])num++;
                if(num==k){ans=b[i];break;}
            }
            printf("%d
    ",ans);
        }
        return 0;
    }

    还要多学啊!!!

  • 相关阅读:
    第五章:数组 结构体 和联合体
    第四章:用户自定义和枚举数据类型
    第三章:systemverilog文本值和数据类型
    阶段一:读几本经济学书
    第二章:systemverilog声明的位置
    数据结构-B树
    UDP的崛起
    vim使用
    sudo apt-get update
    计算机组成原理——浮点数表示方法
  • 原文地址:https://www.cnblogs.com/Ren-Ivan/p/7746659.html
Copyright © 2020-2023  润新知