【题目链接】:

https://loj.ac/problem/10056

【题意】

请输出树上两个点的异或路径  的最大值。

【题解】

这个题目,y总说过怎么做之后,简直就是醍醐灌顶了。

我们知道Xor路径,我们从根结点处理所有结点的  到根结点的异或和,我们想要两个点的异或路径。

其实就是利用根结点  到两个点  异或和 。因为LCA到根结点异或了两遍,所以答案就保留了异或路径的部分。

其实这个题目就是Xor——pair的变种。

处理从根结点出发的所有结点的位置的异或值。

【代码】

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e5 + ;
int Son[N*][];
typedef struct Edge{
int To , next , w ;
}Edge ;
Edge e[N<<];
int Head[N],cnt,Dis[N],idx;
void Init(){
memset( Head , - ,sizeof Head );
cnt = idx = ;
}
void Add_edge ( int u, int v ,int w ){
e[cnt] = Edge { v , Head[u] , w };
Head[u] = cnt ++ ;
} void dfs(int u,int Fa,int w ){
Dis[u] = w ;
for(int i = Head[u] ; ~i ; i = e[i].next){
int To = e[i].To;
if( To == Fa ) continue ;
dfs( To , u , w ^ e[i].w );
}
} void Insert ( int x ){
int p = ;
for (int i=;~i;i--){
int t = x >> i & ;
if( !Son[p][t] )
Son[p][t] = ++idx ;
p = Son[p][t] ;
}
}
int Query(int x ){
int p = ,res = ;
for(int i=;~i;i--){
int t = x >> i & ;
if( Son[p][t^] ){
res += << i ;
p = Son[p][t^];
}else{
p = Son[p][t] ;
}
}
return res ;
}
int main()
{
Init();
int n ;
scanf("%d",&n);
for(int i=,u,v,w;i<n;i++){
scanf("%d%d%d",&u,&v,&w);
Add_edge( u , v , w );
Add_edge( v , u , w );
}
dfs( , - , ) ;
/*
for(int i=1;i<=n;i++){
printf("###%d###\n",Dis[i]);
}
*/
for(int i=;i<=n;i++){
Insert( Dis[i] );
}
int res = ;
for(int i=;i<=n;i++){
res = max( res , Query(Dis[i] ) );
}
printf("%d\n",res) ;
return ;
}

【Trie】The XOR-longest Path的更多相关文章

  1. 【Trie】The XOR Largest Pair

    [题目链接] https://loj.ac/problem/10050 [题意] 给出n个数,其中取出两个数来,让其异或值最大. [题解] 经典的01字典树问题. 首先需要把01字典树建出来. 然后对 ...

  2. 【BZOJ2337】[HNOI2011]XOR和路径 期望DP+高斯消元

    [BZOJ2337][HNOI2011]XOR和路径 Description 题解:异或的期望不好搞?我们考虑按位拆分一下. 我们设f[i]表示到达i后,还要走过的路径在当前位上的异或值得期望是多少( ...

  3. 【BZOJ2115】[Wc2011] Xor 高斯消元求线性基+DFS

    [BZOJ2115][Wc2011] Xor Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ...

  4. 【BZOJ4269】再见Xor 高斯消元

    [BZOJ4269]再见Xor Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. Input 第一行一个正整 ...

  5. 【Trie】Nikitosh 和异或

    [参考博客]: LOJ#10051」「一本通 2.3 例 3」Nikitosh 和异或(Trie [题目链接]: https://loj.ac/problem/10051 [题意]: 找出两个不相交区 ...

  6. 【bzoj4296】再见Xor

    4269: 再见Xor Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 176  Solved: 107[Submit][Status][Discuss ...

  7. 【bzoj2115】[Wc2011] Xor

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2512  Solved: 1049[Submit][Status ...

  8. 【Trie】背单词

    参考博客: https://www.luogu.org/problemnew/solution/P3294 https://blog.csdn.net/VictoryCzt/article/detai ...

  9. 【Trie】L 语言

    [题目链接]: https://loj.ac/problem/10053 [题意]: 给出n个模式串.请问文本串是由多少个模式串组成的. [题解]: 当我学完AC自动机后,发现这个题目也太简单了吧. ...

随机推荐

  1. vuejs是如何编译checkbox数组的v-model的

    随便用官方的例子编译了一下, 发现如下 _c("input", { directives: [ { name: "model", rawName: " ...

  2. 进程 | 线程 | 当Linux多线程遭遇Linux多进程

    背景 本文并不是介绍Linux多进程多线程编程的科普文,如果希望系统学习Linux编程,可以看[<Unix环境高级编程>第3版] 本文是描述多进程多线程编程中遇到过的一个坑,并从内核角度分 ...

  3. route按需加载的3种方式:vue异步组件、es提案的import()、webpack的require.ensure()

    1. vue异步组件技术 vue-router配置路由,使用vue的异步组件技术,可以实现按需加载. 但是,这种情况下一个组件生成一个js文件.举例如下: { path: '/promisedemo' ...

  4. C#与C++数据类型比较及结构体转换(搜集整理二)

    原文网址:http://www.blogjava.net/heting/archive/2010/03/20/315998.html C++ C# ========================== ...

  5. Redis的各项功能解决了哪些问题?(转)

    http://www.cnblogs.com/linianhui/p/what-problem-does-redis-solve.html 先看一下Redis是一个什么东西.官方简介解释到:Redis ...

  6. JAVA-开发构建Gradle项目安装使用教程

    一.简介: Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotl ...

  7. 实现两个DataTable的联合查询

    如方法一描述:将子表的数组追加到主表数组的下面.从而实现类似于视图(单表)的效果. 那么Left Join(Inner Join)和Right Join(Outer Join) 将如何实现呢? 明天仔 ...

  8. python基础--字符串、元组

    字符串方法 注:字符串和元组一样都是不可变的,以下函数不会改变原来字符串的值,可以将其赋给一个新的变量 st='a b c d,f,g' st_list=st.split()#字符串分割,参数不写,按 ...

  9. mysql写存储过程根据时间变化增加工龄

    在工作中遇到要程序根据时间自动增加工龄的需求. php没办法自己发起请求,又不想在服务器上写计划任务crontab,通过用户请求来更改又不能保证用户会去操作. 用数据库的存储过程和事件来完成. 数据库 ...

  10. Centos6.5搭建方法

    # VSFTP # ## ###安装 vsftp     yum install vsftpd* -y ###启动服务     /etc/init.d/vsftpd restart ###配置     ...