01tire+洛谷P4551 最长异或路径

题目:

给定一棵n个点的带权树,结点下标从1开始到N。寻找树中找两个结点,求最长的异或路径。
异或路径指的是指两个结点之间唯一路径上的所有边权的异或。

输入格式

第一行一个整数NN,表示点数。

接下来 n−1 行,给出 u,v,w ,分别表示树上的 u 点和 v 点有连边,边的权值是 w。

输出格式

一行,一个整数表示答案。

输入输出样例

输入 #1

4
1 2 3
2 3 4
2 4 6

输出 #1

7

说明/提示

最长异或序列是1-2-3,答案是 7 (=3 ⊕ 4)

数据范围

1≤n≤100000;0<u,v≤n;0≤w<2311\le n \le 100000;0 < u,v \le n;0 \le w < 2^{31}1n100000;0<u,vn;0w<231

分析:

复习 01trie:
是trie的一种。每个节点是0或者1,我们可以将一些数以二进制表示的形式存入01trie,进而解决一些异或问题。有关trie树的原理再次不在赘述。
异或,指一个法则:

  1. 两个数的二进制数位上相等即为0,不相等即为1。
  2. 显然,一个数对同一个数异或两次等于没有异或,那么异或也就满足交换律,结合律。

对于一列数的异或和,我们可以将其用结合律从1∼\simi,i+1∼\simj进行异或,然后在将这两个结果进行异或,结果不变。
于是我们可以:

  1. 处理出1到每一个节点的异或和

  2. 把他们加到一棵(01trie)里面

  3. 从高位到低位贪心操作,取最大值,即是答案。

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;int head[N], nxt[N<<1], to[N<<1], weight[N<<1], cnt;
int n, dis[N], ch[N<<4][2], tot = 1, ans;void insert(int x){for (int i=30,u=1;i>=0;--i){//由题目,是w<2^31,所以对于异或和只需要30位即可int c=((x>>i)&1);if (!ch[u][c])ch[u][c]=++tot;u=ch[u][c];}
}void get(int x){int res=0;for(int i=30,u=1;i>=0;--i){int c=((x>>i)&1);if(ch[u][c^1]){u=ch[u][c^1];res|=(1<<i);}elseu=ch[u][c];}ans=max(ans,res);
}
void add(int u, int v, int w){nxt[++cnt]=head[u];head[u] = cnt;to[cnt]=v;weight[cnt]=w;
}void dfs(int u,int fa)
{insert(dis[u]);//处理出1到每一个节点的异或和,把他们加到一棵\(01trie\)里面get(dis[u]);for (int i=head[u];i;i=nxt[i]){int v=to[i];if (v==fa)continue;dis[v]=dis[u]^weight[i];dfs(v, u);//用dfs(v,u)表示v和u之间的路径的边权异或和}
}int main()
{scanf("%d", &n);for (int i=1;i<n;++i){int u,v,w;scanf("%d%d%d",&u,&v,&w);add(u,v,w);add(v,u,w);}dfs(1,0);//设定0为根节点,但实际根节点是1;printf("%d", ans);return 0;
}

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

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

相关文章

C#9.0 终于来了,带你一起解读 nint 和 Pattern matching 两大新特性玩法

一&#xff1a;背景1. 讲故事上一篇C#9.0 终于来了&#xff0c;您还学的动吗&#xff1f; 带上VS一起解读吧&#xff01;跟大家聊到了Target-typed new 和 Lambda discard parameters&#xff0c;看博客园和公号里的阅读量都达到了新高&#xff0c;甚是欣慰&#xff0c;不管大家…

[JavaWeb-Tomcat]web服务器软件_Tomcat介绍

Tomcat&#xff1a;web服务器软件 1. 下载&#xff1a;http://tomcat.apache.org/2. 安装&#xff1a;解压压缩包即可。* 注意&#xff1a;安装目录建议不要有中文和空格3. 卸载&#xff1a;删除目录就行了4. 启动&#xff1a;* bin/startup.bat ,双击运行该文件即可* 访问&…

软件设计模式期末大作业——可乐商城管理系统

文章目录设计模式大作业软 件 设 计 模 式 任 务 书设计要求&#xff1a;学生应完成的工作&#xff1a;1. 应用场景描述2. 设计模式选择3. 实现语言与工具参考文献阅读&#xff1a;工作计划&#xff1a;一、系统目标1. 设计目的2. 需求描述二、 系统模式选择1.需求分析2.选用设…

深度解读Microsoft Build 2020:提升开发效率,优化开发环境

Microsoft Build 2020在众多新产品与技术发布中圆满落幕但身为开发技术人深知技术世界的更迭、求索却从未止步唯有不断提升自身技能栈创新方能从技术浮沉中获得更多养分让技术予力世界更有温度Microsoft Build 2020大会后&#xff0c; Visual Studio Family 和 .NET 成为众多开…

[JavaWeb]web相关概念回顾

web相关概念回顾 1. 软件架构1. C/S&#xff1a;客户端/服务器端2. B/S&#xff1a;浏览器/服务器端2. 资源分类1. 静态资源&#xff1a;所有用户访问后&#xff0c;得到的结果都是一样的&#xff0c;称为静态资源.静态资源可以直接被浏览器解析* 如&#xff1a; html,css,Jav…

Github 数据洞察之复杂信息网络

摘要&#xff1a;开源协作是数字化时代的必备技能&#xff0c;而背后的开发行为分析&#xff0c;能够让你看到一幅开源世界的全景图&#xff1b;2020年2月&#xff0c;X-lab 开放实验室联合InfoQ发布了《GitHub 2019 数字年报》&#xff0c;收到了业界的一致好评。数据科学与工…

Java解决x的平方根问题

Java解决x的平方根问题 01 题目 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 **注意&#xff1a;**不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.…

[JavaWeb-Servlet]Servlet相关配置

Servlet相关配置 1. urlpartten:Servlet访问路径1. 一个Servlet可以定义多个访问路径 &#xff1a; WebServlet({"/d4","/dd4","/ddd4"})2. 路径定义规则&#xff1a;1. /xxx&#xff1a;路径匹配2. /xxx/xxx:多层路径&#xff0c;目录结构3. *.…

number one

alibab 第一天&#xff1a; 领了个联想电脑&#xff0c;之前还一直担心会不适应MAC&#xff0c;我想多了&#xff0c;不过转正之后还是会换成MAC。。。 下载安装包&#xff1a; idea&#xff1a;开始以为要专业版&#xff0c;结果用社区版的就行&#xff0c;在阿里郎上直接获…

2020年,.NET Core起飞在即,最强日志分析ELK还不会?

近期.NET社区迎来一系列利好&#xff1a;1 Build2020&#xff0c;微软发布多款产品赋能.NET开发者&#xff0c;比以往任何时候都更贴近开发者&#xff1b;2 TechEmpower第19轮编程语言框架性能排行榜&#xff0c;Asp.Net Core成为主流Web框架第一&#xff1b;3 Stackoverflow 2…

[JavaWeb-HTTP]request对象和response对象的原理

request对象和response对象的原理 1. request和response对象是由服务器创建的。我们来使用它们2. request对象是来获取请求消息&#xff0c;response对象是来设置响应消息

number two

前言 来到Alibaba工作两天后&#xff0c;迎来我的第一个周末&#xff0c;想着以后参与项目后&#xff0c;可能就不能有心情和精力来分享了&#xff0c;哈哈哈&#xff08;其实主要是杭州下雨&#xff0c;就呆在酒店打发时间喽&#xff09;. 先说下本人的一些情况&#xff1a;…

时间序列神器之争:prophet VS lstm

一、需求背景我们福禄网络致力于为广大用户提供智能化充值服务&#xff0c;包括各类通信充值卡&#xff08;比如移动、联通、电信的话费及流量充值&#xff09;、游戏类充值卡&#xff08;比如王者荣耀、吃鸡类点券、AppleStore充值、Q币、斗鱼币等&#xff09;、生活服务类&am…

maven知识提炼总结

文章目录Maven 功能构建文档生成报告依赖SCMs发布分发邮件列表Maven 特点Maven 功能 Maven 能够帮助开发者完成以下工作&#xff1a; 构建 文档生成 报告 依赖 SCMs 发布 分发 邮件列表 Maven 特点 项目设置遵循统一的规则。任意工程中共享。依赖管理包括自动更新。…

[JavaWeb-HTTP]request对象继承体系结构

request对象继承体系结构&#xff1a; ServletRequest -- 接口| 继承HttpServletRequest -- 接口| 实现org.apache.catalina.connector.RequestFacade 类(tomcat)

docker registry 镜像同步

docker registry 镜像同步Intro之前我们的 docker 镜像是保存在 Azure 的 Container Registry 里的&#xff0c;最近我们自己搭建了一个 docker registry&#xff0c;我们想把之前保存的 Azure 的 Container Registry 的 docker 镜像同步到我们自己的 docker registry 里实现思…

maven POM

文章目录概念&#xff1a;在创建 POM 之前&#xff0c;我们首先需要描述项目组 (groupId), 项目的唯一ID。父&#xff08;Super&#xff09;POMPOM 标签大全详解概念&#xff1a; POM( Project Object Model&#xff0c;项目对象模型 ) 是 Maven 工程的基本工作单元&#xff0…

[数据结构-严蔚敏版]P37定义一个带头结点的线性链表

大家如果发现代码有错误&#xff0c;麻烦评论告知一下!!! 代码我已经发现存在部分错误&#xff0c;等有时间我再进行修正。目前存在错误:mergeList_L函数有问题! 代码如下: #include <iostream> using namespace std;typedef struct LNode {int data;LNode *next; }*L…

.NET Core加解密实战系列之——RSA非对称加密算法

简介加解密现状&#xff0c;编写此项目的背景&#xff1a;需要考虑系统环境兼容性问题&#xff08;Linux、Windows&#xff09;语言互通问题&#xff08;如C#、Java&#xff09;网上资料版本不一、不全面.NET官方库密码算法提供不全面&#xff0c;很难针对其他语言&#xff08;…

[数据结构-严蔚敏版]P42多项式Polynomial的实现

大家如果发现代码有错误&#xff0c;麻烦评论告知一下!!! 下面的代码多项式相乘的算法实现并不是书上那种&#xff0c;书上那种我实在是看不懂&#xff0c;所以用了自己的方法写了相乘的算法&#xff0c;就是模拟手算过程&#xff0c;一个一个相乘。 代码如下: #include <…