CodeForces 1100F Ivan and Burgers

Posted wawcac-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeForces 1100F Ivan and Burgers相关的知识,希望对你有一定的参考价值。

CodeForces题面

Time limit 3000 ms

Memory limit 262144 kB

Source Codeforces Round #532 (Div. 2)

Tags data structures divide and conquer greedy math *2600

Editorial

中文题意

英文题面还是没读太懂……其他博客是这么说的——一个长度为\\(n\\)的序列,\\(m\\)个询问,每次询问一个区间内数字的异或最大值。

解题思路

我用的下面第一个思路,还没仔细想证明啊……为什么可以直接把线性基里靠前的那些替换掉而不改变线性基的性质呢……

又有了4道题可以补了

  • [x] CodeForces 1100F Ivan and Burgers 单纯询问区间异或最大值
  • [ ] HDU 6579 Operation 多了个末尾插入数据的操作,还有强制在线
  • [ ] BZOJ 4184 shallot 这题还多了插入和删除的操作。居然是权限题……本地测一下算了。
  • [ ] UVALive 8514 XOR 2017ICPC西安的一道题,操作都差不多

源代码

#include<cstdio>
#include<cstring>
#include<algorithm>

const int MAXN=1e6+5;
const int wide=31;

int T;
int n,m;

int p[MAXN][wide+2],pos[MAXN][wide+2];

void insert(int loc,int val)//location和value

    for(int i=wide;~i;i--)
    
        p[loc][i]=p[loc-1][i];
        pos[loc][i]=pos[loc-1][i];
    
    int temp=loc;
    for(int i=wide;~i;i--)
    
        if((val>>i)&1)
        
            if(!p[loc][i])
            
                p[loc][i]=val;
                pos[loc][i]=temp;
                return;
            
            if(pos[loc][i]<temp)//????????????????????????这里目前还没有想通
            
                std::swap(pos[loc][i],temp);//????????????????????????
                std::swap(p[loc][i],val);
            
            val^=p[loc][i];
        
    



int main()

    scanf("%d",&n);
    for(int i=1,v;i<=n;i++)
    
        scanf("%d",&v);
        insert(i,v);
    
    scanf("%d",&m);
    int lastans=0;
    while(m--)
    
        int l,r;
        scanf("%d%d",&l,&r);
        int ans=0;
        for(int i=wide;~i;i--)
        
            if((ans^p[r][i])>ans&&pos[r][i]>=l)
                ans^=p[r][i];
        
        printf("%d\\n",ans);
    
    return 0;

以上是关于CodeForces 1100F Ivan and Burgers的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces1100F. Ivan and Burgers(离线+线性基)

Codeforces Round #594 (Div. 2) C. Ivan the Fool and the Probability Theory

Codeforces 1248 div2 C. Ivan the Fool and the Probability Theory (思维)

Codeforces 1100F(线性基+贪心)

F. Ivan and Burgers(线性基,离线)

CodeForces 946D Timetable