POJ3764 The xor-longest Path(Trie树)

题目给一棵有边权的树,问树上任意两点路径上的边异或值最多是多少。

记录每个点u到根路径的异或值xor[u],那么任意两点u、v路径的异或值就是xor[u]^xor[v]。

于是这个问题就变成了从n个数中任取两个数异或,求最大异或值,这是个经典的问题,用字典树解决。

方法就是所有数的二进制形式构建成一棵01字典树,枚举每个数从字典树中就能找到对应的最大的答案。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 #define MAXN 110000
 6 struct Edge{
 7     int v,w,next;
 8 }edge[MAXN<<1];
 9 int NE,head[MAXN];
10 void addEdge(int u,int v,int w){
11     edge[NE].v=v; edge[NE].w=w; edge[NE].next=head[u];
12     head[u]=NE++;
13 }
14 int tn,ch[3300000][2];
15 void insert(int a){
16     int x=0;
17     for(int i=31; i>=0; --i){
18         int y=(a>>i)&1;
19         if(ch[x][y]==0) ch[x][y]=++tn;
20         x=ch[x][y];
21     }
22 }
23 int query(int a){
24     int x=0,res=0;
25     for(int i=31; i>=0; --i){
26         int y=((a>>i)&1)^1;
27         if(ch[x][y]) x=ch[x][y],res|=1<<i;
28         else x=ch[x][y^1];
29     }
30     return res;
31 }
32 int val[MAXN];
33 void dfs(int u,int w,int fa){
34     val[u]=w;
35     insert(w);
36     for(int i=head[u]; i!=-1; i=edge[i].next){
37         int v=edge[i].v;
38         if(v==fa) continue;
39         dfs(v,w^edge[i].w,u); 
40     }
41 }
42 int main(){
43     int n,a,b,c;
44     while(~scanf("%d",&n)){
45         NE=0;
46         memset(head,-1,sizeof(head));
47         for(int i=1; i<n; ++i){
48             scanf("%d%d%d",&a,&b,&c);
49             addEdge(a,b,c); addEdge(b,a,c);
50         }
51         tn=0;
52         memset(ch,0,sizeof(ch));
53         dfs(0,0,0);
54         int res=0;
55         for(int i=0; i<n; ++i){
56             res=max(res,query(val[i]));
57         }
58         printf("%d\n",res);
59     }
60     return 0;
61 }

 

转载于:https://www.cnblogs.com/WABoss/p/5171265.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[react] 说说react的生命周期有哪些?

[react] 说说react的生命周期有哪些&#xff1f; 装载阶段 组件第一次被渲染时的阶段&#xff0c;这一阶段相关的生命周期函数有&#xff1a; constructor componentWillMount render componentDidMount 更新阶段 如果组件中的 state 或者 props 发生了改变&#xff0c;React…

【python】os.getcwd和getcwdu

print os.getcwd(), type(os.getcwd()) print os.getcwdu(), type(os.getcwdu()) 结果如下&#xff1a; C:\Users\Administrator\PycharmProjects\mypython_1 <type str>C:\Users\Administrator\PycharmProjects\mypython_1 <type unicode> 可见&#xff0c;一个是…

established关键字

1&#xff0c;首先回顾一下TCP协议&#xff1a; TCP数据包中有六个标志位(Code Bits)&#xff1a;6 位标志域。表示为&#xff1a;紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是&#xff1a;URG、ACK、PSH、RST、SYN、FIN。…

可变参数的宏定义

From: http://www.cnblogs.com/caosiyang/archive/2012/08/21/2648870.html printf()和fprintf()这些输出函数的参数是可变的&#xff0c;在调试程序时&#xff0c;你可能希望定义自己的参数可变的输出函数&#xff0c; 那么可变参数宏会是一个选择。 C99中规定宏可以像函数…

[react] react中除了在构造函数中绑定this,还有别的方式吗?

[react] react中除了在构造函数中绑定this,还有别的方式吗&#xff1f; 1&#xff1a;函数定义的时候使用箭头函数 2&#xff1a;函数调用是使用bind绑定this 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家…

【Objective-C】玩转OC:正式开始自学OC

实话说吧&#xff0c;我觉得同时自学太多语言真是不太好&#xff0c;寒假给自己的任务太重了&#xff0c;但是没有办法啊&#xff0c;谁叫我参加了“我们的益达”的iOS组呢&#xff0c;可是承诺了寒假要好好学的&#xff0c;所以只能挖掘自己的时间、精力和潜力咯O(∩_∩)O哈哈…

从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...

一 DBContext的构造方法&#xff0c;方法的重载 二 DBContext实例中&#xff0c;表实体对象是怎么被加入的 三 分部类是否破坏了单一职责 四 分部方法从另一方面定义了类型的操作规范 五 LINQ实体类中对属性的赋值&#xff0c;变化前与变化后SendPropertyChanging与SendPropert…

Makefile中支持的函数大全

From: http://blog.chinaunix.net/uid-25365622-id-3056374.html 一.描述 Makefile的函数调用&#xff0c;很像变量的使用&#xff0c;也是以“$”来标识的&#xff0c;其语法如下&#xff1a; $(<function> <arguments> ) 或是 ${<function> <argum…

[react] 和Component两者的区别是什么

[react] 和Component两者的区别是什么 组件的state或者props更新都会触发render(),同时也会导致子组件render()重新渲染&#xff1b;当我们不想子组件更新时&#xff0c;需要手动在shouldUpdateComponent当中返回false;pureComponent帮我们做了这部分工作 个人简介 我是歌谣…

还是引用

1 #include <iostream>2 using namespace std;3 4 int getA1()5 {6 int a;7 a 10;8 return a; //复制一份交给主函数相关变量,然后自己消失,只是返回一个值,可能存在于除内存外的其他地方.9 } 10 11 int& getA2() 12 { 13 int a; 14 a 10; 15…

Nginx+Php(FastCGI、Php-fpm)+Mysql+Zend+Memcache+Phpmyadmin+MongoDB+TT安装

源码包下载 wget http://www.monkey.org/~provos/libevent-1.2.tar.gz wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.8.0-rc2.tgz wget http://blog.s135.com/soft/linux/nginx_php/rpm/x8…

[react] 如何解决引用类型在pureComponent下修改值的时候,页面不渲染的问题?

[react] 如何解决引用类型在pureComponent下修改值的时候&#xff0c;页面不渲染的问题&#xff1f; 不要在state或者props当中修改数组或者对象 通过使用es6的assign方法或者数组的扩展运算符或者使用第三方库&#xff0c;强制返回一个新的对象 (页面为什么不渲染) 是因为组件…

Makefile中自定义函数的调用

From: http://www.cnblogs.com/MyEyes/archive/2012/01/12/2320589.html 自己学习脚印&#xff0c;不喜勿喷&#xff0c;谢谢 ~ Makefile中函数定义&#xff1a; external/genext2fs/Config.mk # $(1): src directory # $(2): output file # $(3): label (if any) # $(4): …

python selenium ---键盘事件

转自&#xff1a;http://www.cnblogs.com/fnng/p/3258946.html 本节重点&#xff1a; l 键盘按键用法l 键盘组合键用法l send_keys() 输入中文运行报错问题键盘按键键用法&#xff1a; #codingutf-8 from selenium import webdriver from selenium.webdriver.common.keys impor…

Android.自定义控件的实现 (转载)

尊重他人劳动成果&#xff0c;转载请注明出处。 转自&#xff1a;http://kandy0619.blog.163.com/blog/static/64344345201012325939280/ 可能是一直都在做Web的富客户端开发的缘故吧&#xff0c;在接触Android之后&#xff0c;发现其控件实在惨不忍睹&#xff08;不知道是否说…

React-Router面试题汇总

[react-router] React-Router怎么获取URL的参数&#xff1f; [react-router] 在history模式中push和replace有什么区别&#xff1f; [react-router] React-Router 4中&#xff1c;Router&#xff1e;组件有几种类型&#xff1f; [react-router] React-Router怎么设置重定向…

Eclipse中使用自己的makefile管理工程

From: http://blog.csdn.net/whz_zb/article/details/7101164 我用的环境&#xff1a; &#xff08;1&#xff09;系统&#xff1a; Ubuntu 11.04 &#xff08;2&#xff09;Eclipse CDT 1. 在建立工程的时候选择makefile工程。 2.将makefile文件和你写好的工程文件&#x…

Spring MVC遭遇checkbox的问题解决方式

Spring MVC遭遇checkbox的问题是&#xff1a;当checkbox全不选时候&#xff0c;则该checkbox域的变量为null&#xff0c;不能动态绑定到spring的controller方法的入參上&#xff0c;并抛出异常。 解决方式&#xff1a; 1、javascript方式提交&#xff0c;提交前拼提交參数串。拼…

[Redux/Mobx] redux和flux的区别是什么?

[Redux/Mobx] redux和flux的区别是什么&#xff1f; Flux: Store 包含状态和更改逻辑有多个 Store所有 Store 都互不影响且是平级的有单一调度器React 组件订阅 store状态是可变的 Redux: Store 和更改逻辑是分开的只有一个 Store带有分层 reducer 的单一 Store没有调度器的…

[转载]Python量化交易平台开发教程系列0-引言

原文出处&#xff1a;http://vnpy.org/2015/03/04/20150304_Python%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93%E5%B9%B3%E5%8F%B0%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B%E7%B3%BB%E5%88%970-%E5%BC%95%E8%A8%80/ 为什么用Python来开发量化交易平台 目前本人所在的公司一共有三款平台…