zoukankan      html  css  js  c++  java
  • 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
    ",ans);
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    继承
    JAVA接口的继承与集合
    JAVA接口
    c++程序—敲桌子
    c++程序—水仙花数
    c++程序—while猜数字游戏
    c++程序—switch分支
    c++程序—三目运算符
    c++程序—if语句实践
    c++程序—选择结构
  • 原文地址:https://www.cnblogs.com/wawcac-blog/p/11326516.html
Copyright © 2011-2022 走看看