题目:

题目背景

OURCE:NOIP2015-SHY-7

题目描述

求一棵带边权的树的一条最大 Xor 路径的值。这里的“路径”不一定从根到叶子结点,中间一段路径只要满足条件也可以。

输入格式

第一行,一个整数 N ,表示一颗树有 N 个节点,接下来 N-1 行,每行三个整数 a,b,c 表示节点 a 和节点 b 之间有条权值为 c 的边。

输出格式

输出仅一行,即所求的最大值。

样例数据 1

输入  [复制]


1 2 3 
1 3 4 
1 4 7

输出

7

备注

【数据范围】
对 40% 的输入数据 :数据退化为一条链;
另对 10% 的输入数据 :N≤1000;
对 100% 的输入数据 :1≤N≤100000, c≤231-1。

题解:

套路题

首先预处理出所有点到根节点的异或和XOR····然后将其转化成二进制从高位到低位储存到trie树上··容易想到两个点的XOR的异或和就是这两个点的路径的异或和····所以枚举每一个XOR,在trie树上走,从高位开始查找与起位置上的数相反的数是否存在···如果存在优先选择···一边走一边计算答案即可

代码:

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<string>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=1e5+5;
const int M=4e6+5;
int fst[N],go[N*2],nxt[N*2],val[N*2],tot,n,xo[N],maxx,len;
struct node
{int son[2];
}tr[M];
inline int R()
{char c;int f=0;for(c=getchar();c<'0'||c>'9';c=getchar());for(;c<='9'&&c>='0';c=getchar())f=(f<<3)+(f<<1)+c-'0';return f;
}
inline void comb(int a,int b,int v)
{nxt[++tot]=fst[a],fst[a]=tot,go[tot]=b,val[tot]=v;nxt[++tot]=fst[b],fst[b]=tot,go[tot]=a,val[tot]=v;
}
inline void dfs(int u,int fa)
{for(int e=fst[u];e;e=nxt[e]){int v=go[e];if(v==fa)  continue;xo[v]=xo[u]^val[e];dfs(v,u);}
}
inline void insert(int x)
{int po=0;   for(int i=len-1;i>=0;i--){int temp=(x>>i)&1;if(!tr[po].son[temp])  tr[po].son[temp]=++tot;po=tr[po].son[temp];}
}
inline int check(int x)
{int ans=x,po=0;for(int i=len-1;i>=0;i--){int temp=(x>>i)&1;if(tr[po].son[temp^1])  ans|=(1<<i),po=tr[po].son[temp^1];else ans^=(temp<<i),po=tr[po].son[temp];}return ans;
}
int main()
{//freopen("a.in","r",stdin);n=R();int a,b,c;for(int i=1;i<n;i++)  {a=R(),b=R(),c=R();maxx=max(maxx,c);comb(a,b,c);}dfs(1,0);int temp=maxx;while(temp)  temp/=2,len++;tot=0;for(int i=2;i<=n;i++)  insert(xo[i]);  for(int i=2;i<=n;i++)maxx=max(maxx,check(xo[i]));cout<<maxx<<endl;return 0;
}

转载于:https://www.cnblogs.com/AseanA/p/7639894.html

刷题总结——xor(ssoj)相关推荐

  1. CSP-S集训刷题记录

    $ CSP.S $ 集训刷题记录: $ By~wcwcwch $ 一.字符串专题: 1. [模板]$ manacher $ 算法 模型: 求出字符串 $ S $ 中所有回文串的位置及长度. $ sol ...

  2. LeetCode刷题遇到的小知识点总结

    文章目录 1. 需要判断输入的两个参数的大小/长度 2. 数学分式的化简 3. 二叉树操作的小总结 4. MySQL分组内取前几名的问题 5. SQL中的小问题 6. 对哈希表的初步理解 (1)初步理 ...

  3. 2022-03-10每日刷题打卡

    2022-03-10每日刷题打卡 力扣--每日一题 589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每 ...

  4. leetcode数组相关简单习题,玉米迪迪的刷题之旅(*╹▽╹*)

    好啦好啦!我今天开始重鼓信心刷题啦!也不知道怎么回事一道简单的数组题开始有了思路,却总是写不出来,但是也就是看了别的大佬的思路以及自己的回忆,突然发现!这个题的做法我的老师讲过!一下子又发现我回忆起来 ...

  5. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  6. leetcode分类刷题笔记

    leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...

  7. 【2023.5.3~2023.5.9】CTF刷题记录

    目录 日期:2023.5.3 题目:[GWCTF 2019]pyre 日期:2023.5.4 题目:[ACTF新生赛2020]easyre 题目:DASCTF Apr.2023 X SU战队2023开 ...

  8. Leetcode-How-What 力扣Leetcode刷题指南

    Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...

  9. 牛年前的一小结——打响本命年的第一枪,继续刷题!

    经过一段时间的小尝试,摸索出了一点点头儿吧. 总结一下子. 关于面试的java,像我这个经验层次(1-2year普通厂)的都不会太难.最多超不出力扣中等难度. 多练习链表.树.指针类的比较基础的题目: ...

最新文章

  1. 百度宣布AI语音调用登顶中国第一,自研芯片+最新端到端模型颠覆传统语音识别算法...
  2. lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!
  3. JAVA命令符找不到符号_[转]Java命令行编译文件时出现的错误,找不到符号或软件包不存在等...
  4. java程序员必看经典书单,以及各个阶段学习建议
  5. Leetcode--494. 目标和
  6. 惠普HP1280墨盒型号
  7. 1044. 火星数字(20)-PAT乙级真题
  8. 因果推断与反事实预测——盒马KDD2021的一篇论文(二十三)
  9. Note_Fast Image Processing with Fully-Convolutional Networks
  10. Linux关闭占用端口的进程
  11. 云服务器机型系统选择,云服务器机型选择操作系统
  12. 实验用USB转RS-232下载线制作
  13. 详解Java 堆排序
  14. 利用第三方Cookie和iframe完成广告显示(各大网站就是利用了第三方Cookie和iframe来显示百度和京东的广告)
  15. 乐高JAVA编程_编程和乐高机器人,是一样的吗?学习这些有用吗?
  16. NSString 和 UInt8 相互转换
  17. OmegaT术语库介绍与分享
  18. HMC5883L地磁传感器驱动
  19. 列向量和行向量看待矩阵乘法
  20. 如何快速构建量化股票池?

热门文章

  1. Android 代码执行Linux Shell小记
  2. Hi3520d uboot uImage rootfs 移植与升级
  3. 在C语言中巧用正则表达式
  4. python对时间日期做格式化
  5. linux下gdb常用的调试命令
  6. Nginx下配置小绿锁https
  7. [react] 如何用React实现滚动动画?
  8. 前端学习(3101):vue+element今日头条管理-react简介2
  9. [css] 如何使用css实现鼠标跟随?
  10. 工作323:uni-获取时间参数