POJ3764 The xor-longest Path(字典树)
题意
给你一棵树,n个节点,n-1条边每条边i都有一个权值wi。定义任意两点间的权值为:这两点间的路径上的所有边的值的异或。比如a点和b点间有i,j,k三条边,那么ab两点间的权值为:wi^wj^wk。求这个最大的权值(最长异或路径)。
(n<=105)
题解
首先 边权可以放到点权上
然后我们可以搞一个树上的前缀异或和.
这样的话 把当前点的所有点权加到trie树里
从最高位到最低位走不同的路
例:1011100101
我们要走:0100011010
如果走不了就顺着走
跑出来的数异或当前的数就是经过这个点的最优解了
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<cmath>
- #include<algorithm>
- using namespace std;
- const long long N=;
- long long ans,tot,cnt,head[N],n,mx,flag;
- struct edge{
- long long to,nxt,w;
- }e[N*];
- struct tree{
- long long nxt[];
- }tr[N*];
- void insert(long long a){
- long long now=,z;
- for(long long i=;i>=;i--){
- if(a&(<<(i-)))z=;
- else z=;
- if(!tr[now].nxt[z]){
- tr[now].nxt[z]=++tot;
- memset(tr[tot].nxt,,sizeof(tr[tot].nxt));
- }
- now=tr[now].nxt[z];
- }
- }
- void check(long long x){
- long long tmp=;
- long long now=,z;
- for(long long i=;i>=;i--){
- if(x&(<<(i-)))z=;
- else z=;
- if(tr[now].nxt[!z]){
- tmp=(tmp<<)+;
- now=tr[now].nxt[!z];
- }
- else{
- tmp=tmp<<;
- now=tr[now].nxt[z];
- }
- }
- ans=max(ans,tmp);
- }
- void add(long long u,long long v,long long w){
- cnt++;
- e[cnt].nxt=head[u];
- e[cnt].to=v;
- e[cnt].w=w;
- head[u]=cnt;
- }
- void dfs1(long long u,long long f,long long w){
- insert(w);
- for(long long i=head[u];i;i=e[i].nxt){
- long long v=e[i].to;
- if(v==f)continue;
- w^=e[i].w;
- dfs1(v,u,w);
- w^=e[i].w;
- }
- }
- void dfs2(long long u,long long f,long long w){
- check(w);
- for(long long i=head[u];i;i=e[i].nxt){
- long long v=e[i].to;
- if(v==f)continue;
- w^=e[i].w;
- dfs2(v,u,w);
- w^=e[i].w;
- }
- }
- int main(){
- while(~scanf("%lld",&n)){
- ans=;cnt=;tot=;mx=;flag=;
- memset(head,,sizeof(head));
- memset(tr[].nxt,,sizeof(tr[].nxt));
- for(long long i=;i<=n-;i++){
- long long u,v,w;
- scanf("%lld%lld%lld",&u,&v,&w);
- u++;v++;
- add(u,v,w);
- add(v,u,w);
- }
- insert();
- dfs1(,,);
- dfs2(,,);
- printf("%lld\n",ans);
- }
- return ;
- }
POJ3764 The xor-longest Path(字典树)的更多相关文章
- poj3764 The XOR Longest Path【dfs】【Trie树】
The xor-longest Path Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10038 Accepted: ...
- poj 3764 The xor-longest Path(字典树)
题目链接:poj 3764 The xor-longest Path 题目大意:给定一棵树,每条边上有一个权值.找出一条路径,使得路径上权值的亦或和最大. 解题思路:dfs一遍,预处理出每一个节点到根 ...
- HDU--5269 ZYB loves Xor I (字典树)
题目电波: HDU--5269 ZYB loves Xor I 首先我们先解决 ai xor aj 每个数转化为二进制 我们用字典树统计 每个节点 0 和 1 的出现的个数 #include< ...
- CH 1602 - The XOR Largest Pair - [字典树变形]
题目链接:传送门 描述在给定的 $N$ 个整数 $A_1, A_2,\cdots,A_N$ 中选出两个进行xor运算,得到的结果最大是多少? 输入格式第一行一个整数 $N$,第二行 $N$ 个整数 $ ...
- HDU 5715 XOR 游戏 二分+字典树
XOR 游戏 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5715 Description 众所周知,度度熊喜欢XOR运算(XOR百科). 今天,它 ...
- HDU4825 Xor Sum(字典树解决最大异或问题)
Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整 ...
- HDU-4825 Xor Sum,字典树好题!
Xor Sum 一遍A了之后大呼一声好(keng)题!debug了两小时~~~~百度之星资格赛,可以. 题意:给你一个n个元素的数组,m次查询,每次输入一个数k要求从数组中找到一个数与k异或值最大,输 ...
- 题解 bzoj1954【Pku3764 The xor – longest Path】
做该题之前,至少要先会做这道题. 记 \(d[u]\) 表示 \(1\) 到 \(u\) 简单路径的异或和,该数组可以通过一次遍历求得. \(~\) 考虑 \(u\) 到 \(v\) 简单路径的异或和 ...
- HDU5715 XOR 游戏 二分+字典树+dp
当时Astar复赛的时候只做出1题,赛后补题(很长时间后才补,懒真是要命),发现这是第二简单的 分析: 这个题,可以每次二分区间的最小异或和 进行check的时候用dp进行判断,dp[i][j]代表前 ...
- POJ 3764 The xor-longest Path ( 字典树求异或最值 && 异或自反性质 && 好题好思想)
题意 : 给出一颗无向边构成的树,每一条边都有一个边权,叫你选出一条路,使得此路所有的边的异或值最大. 分析 : 暴力是不可能暴力的,这辈子不可能暴力,那么来冷静分析一下如何去做.假设现在答案的异或值 ...
随机推荐
- Pyhton二级操作题练习
# 1.编写一个python程序,输入两个数,比较它们的大小并输出其中较大者. num1 = input('请输入数字X:') num2 = input('请输入数字Y:') if num1.isde ...
- [NOIP补坑计划]NOIP2017 题解&做题心得
终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...
- 2019-03-20 用SSIS把Excel中的数据导出来保存到SQLServer中
Control Flow 1.配置 好 图形 2.去变量那 配置好 文件路径 和 存储过程 3.在SQL Server创建对应的存储过程,该存储过程的功能是每次导入是清空原有的数据 4.如果不懂的参考 ...
- Vue父子组件之间的通讯(学习笔记)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 异构关系数据库(MySql与Oracle)之间的数据类型转换参考
一.MySQL到Oracle的数据类型的转变: 编号 MySQL ToOracle Oracle 1 GEOMETRY BLOB BLOB 2 GEOMETRYCOLLECTION BLOB BLOB ...
- 【【henuacm2016级暑期训练】动态规划专题 H】Greenhouse Effect
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 原题意等价于:给你一个序列(实数的位置没用!)..你可以改变其中某些元素的位置(插入到某些位置中间. 然后让他变成有序的. (有序的 ...
- table的创建
results为table的行信息 columnNames 是table列名 //创建并初始化table: table =new JTable(results,columNames); //设置ta ...
- POJ——T1789 Truck History
http://poj.org/problem?id=1789 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 27597 ...
- Linux下永久改动MAC地址和ifconfig命令总结
1. 固定一个MAC地址,特别是在使用多个虚拟机的时候 linux环境下: 用root身份登录,在/etc/rc.d/rc.local里加上这三句 ifconfig eth0 down ifconfi ...
- 对象不支持“abigimage”属性或方法
在一个网页中用了一个js插件, js文件引用的没有错,代码也和demo差点儿相同, 可是执行时ie的调试工具报了一个错: 解决方式: jquery文件冲突,发现原来自己引过一个 <script ...