• Poj3764---The xor-longest Path


    传送门:http://poj.org/problem?id=3764

    题解

    注意到:对于任意一条路径的异或,表示为f(u, v) 则f(u, v) = f(1, u) ^ f(1, v)
    接下来就很简单了,就是在一个数组内,找两个数异或值最大(该模型具体实现见:https://www.cnblogs.com/wangyh1008/p/9401389.html

    代码
    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    using namespace std;
    const int N=1750005;
    int vet[N],next[N],head[N],dis[N],x[N],edgenum,ch[N][5],tot,n;
    int read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x*=10;x+=ch-'0';ch=getchar();}
        return x*f;
    }
    inline void init()
    {
    	memset(ch,0,sizeof(ch)); memset(x,0,sizeof(x)); tot=1; edgenum=0;
    	memset(head,-1,sizeof(head)); memset(next,-1,sizeof(next));
    }
    inline void addedge(int u,int v,int t)
    {
    	vet[++edgenum]=v;
    	next[edgenum]=head[u];
    	head[u]=edgenum;
    	dis[edgenum]=t;
    }
    void dfs(int u)
    {
    	for (int e=head[u]; e!=-1; e=next[e])
    		if (!x[vet[e]] && vet[e]!=1){
    			int v=vet[e];
    			x[v]=x[u]^dis[e];
    			dfs(v);
    		}
    }
    inline void insert(int x)
    {
    	int u=1;
    	for (int i=1<<30; i; i>>=1){
    		int c=x&i; if (c) c=1; else c=0;
    		if (!ch[u][c]) ch[u][c]=++tot;
    		u=ch[u][c];
    	}
    }
    inline int get(int x)
    {
    	int u=1,ans=0;
    	for (int i=1<<30; i; i>>=1){
    		int c=x&i; if (c) c=0; else c=1;
    		if (ch[u][c]) ans+=i,u=ch[u][c]; else u=ch[u][!c];
    	}
    	return ans;
    }
    int main()
    {
    	while (~scanf("%d",&n)){
    		init();
    		for (int i=1; i<n; i++){
    			int x=read(),y=read(),v=read(); x++; y++;
    			addedge(x,y,v); addedge(y,x,v);
    		}
    		dfs(1);
    		for (int i=1; i<=n; i++) insert(x[i]);
    		int ans=0;
    		for (int i=1; i<=n; i++) ans=max(ans,get(x[i]));
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    
  • 相关阅读:
    Lombok——一款Java构建工具,“懒人”必备!!(idea版)
    HTML——列表标签
    HTML——超链接<a>
    python 数据写入json文件时中文显示Unicode编码问题
    Spring——Bean的作用域
    过程与函数
    异常错误处理
    游标变量的使用
    =>符号的意义
    游标的使用
  • 原文地址:https://www.cnblogs.com/wangyh1008/p/9408059.html
Copyright © 2020-2023  润新知