• BZOJ 4184 线段树+高斯消元


    思路:
    线段树表示的是时间 每回最多log个段
    区间覆盖
    一直到叶子 的线性基 xor 一下 就是答案
    一开始没有思路 看了这篇题解 豁然开朗
    http://www.cnblogs.com/joyouth/p/5333181.html
    (还是本省的前辈呢)

    //By SiriusRen
    #include <set>
    #include <vector>
    #include <cstdio>
    using namespace std;
    const int N=500000;
    int n,top,all,s[N],a[N];
    struct Node{int id,num;Node(int x,int y){id=x,num=y;}Node(){}};
    struct Add{int l,r,num;Add(int x,int y,int z){l=x,r=y,num=z;}Add(){}}add[N];
    struct Ans{
        int num[32];
        void psh(int x){
            for(int i=30;i>=0;i--)if(x&(1<<i)){
                if(!num[i]){num[i]=x;break;}
                else x^=num[i];
            }
        }
    }jy;
    bool operator<(Node a,Node b){return a.num<b.num;}
    set<Node>Set;set<Node>::iterator it;
    vector<int>vec[N*4];
    void insert(int l,int r,int pos,int L,int R,int num){
        if(l>=L&&r<=R){vec[pos].push_back(num);return;}
        int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
        if(mid<L)insert(mid+1,r,rson,L,R,num);
        else if(mid>=R)insert(l,mid,lson,L,R,num);
        else insert(l,mid,lson,L,R,num),insert(mid+1,r,rson,L,R,num);
    }
    void dfs(int l,int r,int pos,Ans now){
        for(int i=0;i<vec[pos].size();i++)now.psh(vec[pos][i]);
        if(l==r){
            int temp=0;
            for(int i=30;i>=0;i--)if((temp^now.num[i])>temp)temp^=now.num[i];
            printf("%d
    ",temp);
            return;
        }
        int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
        dfs(l,mid,lson,now),dfs(mid+1,r,rson,now);
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            if(a[i]>0)Set.insert(Node(i,a[i]));
            else it=Set.lower_bound(Node(0,-a[i])),add[++all]=Add((*it).id,i-1,-a[i]),Set.erase(it);
        }
        for(it=Set.begin();it!=Set.end();++it)add[++all]=Add((*it).id,n,(*it).num);
        for(int i=1;i<=all;i++)insert(1,n,1,add[i].l,add[i].r,add[i].num);
        dfs(1,n,1,jy);
    }
  • 相关阅读:
    grafana,graphite,influxdb with docker
    InfluxDB通过HTTP API
    REDIS 六. 修复方案
    linux Service start
    应该掌握的JQuery的7个效果
    webssh: gateone
    Linux下使用timedatectl命令时间时区操作详解
    Linux下使用date命令查看和修改时间
    Linux下使用ntpdate进行时间同步
    nginx内置变量
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532042.html
Copyright © 2020-2023  润新知