洛谷 P4551 最长异或路径
题目描述
给定一棵 nn 个点的带权树,结点下标从 11 开始到 NN 。寻找树中找两个结点,求最长的异或路径。
异或路径指的是指两个结点之间唯一路径上的所有节点权值的异或。
输入输出格式
输入格式:
第一行一个整数 NN ,表示点数。
接下来 n-1n−1 行,给出 u,v,wu,v,w ,分别表示树上的 uu 点和 vv 点有连边,边的权值是 ww 。
输出格式:
一行,一个整数表示答案。
输入输出样例
4 1 2 3 2 3 4 2 4 6
7
说明
最长异或序列是1-2-3,答案是 7 (=3 ⊕ 4)
数据范围
1\le n \le 100000;0 < u,v \le n;0 \le w < 2^{31}1≤n≤100000;0<u,v≤n;0≤w<2^31
为什么不叫trie树模板题呢???
练练板子hhhh
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=100005;
int ci[35],n,m,Xor[maxn],c=0,ch[maxn*57][2],R=0,A=0;
int to[maxn*2],ne[maxn*2],val[maxn*2],num,hd[maxn];
inline void add(int x,int y,int z){ to[++num]=y,ne[num]=hd[x],hd[x]=num,val[num]=z;}inline void Ins(int x){int now=R;for(int i=30,u;i>=0;i--){u=(ci[i]&x)?1:0;if(!ch[now][u]) ch[now][u]=++c;now=ch[now][u];}
}int F(int x){int now=R,an=0;for(int i=30,u;i>=0;i--){u=(ci[i]&x)?0:1;if(ch[now][u]) an+=ci[i],now=ch[now][u];else now=ch[now][u^1];}return an;
}void dfs(int x,int fa){A=max(A,F(Xor[x])),Ins(Xor[x]);for(int i=hd[x];i;i=ne[i]) if(to[i]!=fa){Xor[to[i]]=Xor[x]^val[i];dfs(to[i],x);}
}int main(){ci[0]=1;for(int i=1;i<=30;i++) ci[i]=ci[i-1]<<1;scanf("%d",&n);int uu,vv,ww;for(int i=1;i<n;i++) scanf("%d%d%d",&uu,&vv,&ww),add(uu,vv,ww),add(vv,uu,ww);dfs(1,-1);printf("%d\n",A);return 0;
}
转载于:https://www.cnblogs.com/JYYHH/p/9026855.html
洛谷 P4551 最长异或路径相关推荐
- 01tire+洛谷P4551 最长异或路径
题目: 给定一棵n个点的带权树,结点下标从1开始到N.寻找树中找两个结点,求最长的异或路径. 异或路径指的是指两个结点之间唯一路径上的所有边权的异或. 输入格式 第一行一个整数NN,表示点数. 接下来 ...
- P4551 最长异或路径
P4551 最长异或路径 题意: 给定一棵 n 个点的带权树,结点下标从 1 开始到 n.寻找树中找两个结点,求最长的异或路径. 异或路径指的是指两个结点之间唯一路径上的所有边权的异或. 题解: 我们 ...
- luoguP4551最长异或路径
P4551最长异或路径 链接 luogu 思路 从\(1\)开始\(dfs\)求出\(xor\)路径.然后根据性质\(x\)到\(y\)的\(xor\)路径就是\(xo[x]^xo[y]\) 代码 # ...
- 洛谷P1807 最长路_NOI导刊2010提高(07) 求有向无环图的 最长路 图论
洛谷P1807 最长路_NOI导刊2010提高(07) 图论 求有向无环图的 最长路 首先阐明一点 最长路dijkstra 是不能做 (当然我是不会做的,不过我貌似看到过网上的dalao有用dijst ...
- 信息学奥赛一本通 1116:最长平台 | OpenJudge NOI 1.9 12:最长平台 | 洛谷 B2097 最长平台
[题目链接] ybt 1116:最长平台 OpenJudge NOI 1.9 12:最长平台 洛谷 B2097 最长平台 [题目考点] 1. 数组中做统计 2. 求最大值 [解题思路] 解法1:遍历并 ...
- YBTOJ洛谷P4551:最长异或路径(trie树)
洛谷传送门 文章目录 题目描述 解析 代码 题目描述 解析 本题关键就在于一点: 若把每个点的深度dep[i]定义为从根到节点边权的异或和 那么i到j的路径异或和可以表示为: dep[i] ^ dep ...
- 洛谷 P2420 让我们异或吧
P2420 让我们异或吧 题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中-xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B ...
- 洛谷 - P3358 最长k可重区间集问题(最大费用最大流+思维建边)
题目链接:点击查看 题目大意:给出n个开区间,现在要求从中选取一定数量的区间,需要满足: 对于任意点x,所选取的区间中包含点x的个数小于等于k 区间长度和最大 要求输出最长的区间长度和 题目分析:一开 ...
- 图论--最长路--洛谷P1807 最长路_NOI导刊2010提高(07)
题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入格式 ...
最新文章
- CBA 赛程的笔记 - 北京首钢
- 【对讲机的那点事】车载台天线系统故障的检测、排除方法(上)
- java线程池有哪几种,真香系列
- 数据库工程开发秘籍之TSQL 存储过程user stored procedure的概念与案例实战
- suList() 和 asList()
- EntitySpaces2009的开发文档地址
- OpenJudge NOI 1.8 24:蛇形填充数组
- general protection fault怎么办_法院离婚调解书我想办补充协议怎么办?-免费法律咨询...
- OpenPilot 0.3.2 发布,开源自动驾驶技术
- python基本数据类型——set
- 举例说明指针的运算方法c语言,C语言中指针的使用方法
- c语言汇率转换代码_C语言人民币转换代码..doc
- selenium IDE下载及使用
- oracle ap tp是什么,AP模式和Router模式区别是什么
- 在Android中加入GOOGLE统计系统
- 怎么安装java_怎么安装打印机到电脑步骤
- 基于GPT-4的免费代码生成工具
- 锐龙R3 3300X和R5 3500X 哪个好
- 条形码控件TBarCode SDK系列教程一(TBarCode OCX篇)
- 怎样使用word的朗读文本功能
热门文章
- 计算机用户域怎么删除,如何查找并删除AD域中多余的计算机帐号?
- java mac sh_如何创建AppleScript或Command文件以在Mac OS上启动Java应用程序?
- 【ruoyi若依】flot 图表跑版
- MySQL 查看执行计划
- uniapp H5页面使用uni.request时,出现跨域问题
- html5页面被键盘挡住,HTML5 虚拟键盘出现挡住输入框怎么办
- c语言个人账册报告的课题来源,C语言个人账簿管理系统报告
- red hat 6 安装php,Red hat linux服务器简明安装手册(OpenSSL+Mysql+Apache2+PHP)
- 特征值和特征向量到底描述了什么
- MapReduce 在Shuffle阶段 内存溢出原因分析及处理方法