zoukankan      html  css  js  c++  java
  • BZOJ 4269: 再见Xor(线性基+贪心)

    传送门

    解题思路

      首先最大值很好求,直接造出来线性基贪心即可。次大值的话就枚举哪一位跟最大值不同,然后异或上即可。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    
    using namespace std;
    const int N=100005;
    
    inline int rd(){
    	int x=0,f=1;char ch=getchar();
    	while(!isdigit(ch)) f=ch=='-'?0:1,ch=getchar();
    	while(isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
    	return f?x:-x;	
    }
    
    int n,Ans1,b[35],Ans2;
    bool vis[35];
    
    inline void Insert(int x){
    	for(int i=31;~i;i--)
    		if((x&(1<<i))) {
    			if(!b[i]) b[i]=x;
    			x^=b[i];	
    		}
    }	
    
    inline void get_Ans(){
    	for(int i=31;~i;i--)
    		if(b[i] && (Ans1^b[i])>Ans1) Ans1^=b[i];	
    	for(int i=31;~i;i--)
    		if((Ans1^b[i])<Ans1) Ans2=max(Ans2,Ans1^b[i]);	
    }
    
    int main(){
    	n=rd(); int x;
    	for(int i=1;i<=n;i++)
    		x=rd(),Insert(x);
    	get_Ans(); printf("%d %d
    ",Ans1,Ans2);
    	return 0;	
    }
    
  • 相关阅读:
    《图解CSS3》笔记5 媒体与Responsive设计
    理论篇 前端MVC、MVP、MVVM思考1
    AngularJS篇 $resource使用笔记
    《图解CSS3》笔记4 animation动画
    Prim
    邻接矩阵与邻接表
    差分约束
    SPFA
    floyd
    Kosaraju
  • 原文地址:https://www.cnblogs.com/sdfzsyq/p/10349060.html
Copyright © 2011-2022 走看看