BZOJ 1954 The xor-longest Path

时间:2022-11-09 10:00:02

问题转化为一些数里面选两个数异或和最大。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxv 200500
#define maxe 300500
using namespace std;
int n,x,y,z,g[maxv],nume=,dis[maxv],root,tot=,ls[maxv<<],rs[maxv<<],bin[],ans=;
struct edge
{
int v,w,nxt;
}e[maxe];
void addedge(int u,int v,int w)
{
e[++nume].v=v;e[nume].w=w;
e[nume].nxt=g[u];g[u]=nume;
}
void dfs(int x,int fath)
{
for (int i=g[x];i;i=e[i].nxt)
{
int v=e[i].v;
if (v!=fath)
{
dis[v]=dis[x]^e[i].w;
dfs(v,x);
}
}
}
void insert(int &now,int x,int bit)
{
if (!now) now=++tot;
if (bit==-) return;
int nb=x&bin[bit];
if (!nb) insert(ls[now],x,bit-);
else insert(rs[now],x,bit-);
}
void build()
{
bin[]=;
for (int i=;i<=;i++) bin[i]=bin[i-]<<;
for (int i=;i<=n;i++) insert(root,dis[i],);
}
int ask(int now,int x,int bit)
{
if (bit==-) return ;
int nb=x&bin[bit];
if (!nb)
{
if (rs[now]) return ask(rs[now],x,bit-)+bin[bit];
else return ask(ls[now],x,bit-);
}
else
{
if (ls[now]) return ask(ls[now],x,bit-)+bin[bit];
else return ask(rs[now],x,bit-);
}
}
int main()
{
scanf("%d",&n);
for (int i=;i<=n-;i++)
{
scanf("%d%d%d",&x,&y,&z);
addedge(x,y,z);addedge(y,x,z);
}
dfs(,);
build();
for (int i=;i<=n;i++) ans=max(ans,ask(root,dis[i],));
printf("%d\n",ans);
return ;
}

BZOJ 1954 The xor-longest Path的更多相关文章

  1. poj3764 The XOR Longest Path【dfs】【Trie树】

    The xor-longest Path Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10038   Accepted:  ...

  2. 题解 bzoj1954【Pku3764 The xor – longest Path】

    做该题之前,至少要先会做这道题. 记 \(d[u]\) 表示 \(1\) 到 \(u\) 简单路径的异或和,该数组可以通过一次遍历求得. \(~\) 考虑 \(u\) 到 \(v\) 简单路径的异或和 ...

  3. BZOJ 1954&colon; Pku3764 The xor-longest Path&lpar;贪心&plus;trie&rpar;

    传送门 解题思路 \(trie\)的一个比较经典的应用,首先把每个点到根的异或和算出,然后建一棵\(trie\)把所有权值插入到\(Trie\)中,之后枚举所有结点,在\(Trie\)上贪心的跑统计答 ...

  4. Solve Longest Path Problem in linear time

    We know that the longest path problem for general case belongs to the NP-hard category, so there is ...

  5. Why longest path problem doesn&&num;39&semi;t have optimal substructure&quest;

    We all know that the shortest path problem has optimal substructure. The reasoning is like below: Su ...

  6. 【BZOJ】1954&colon; Pku3764 The xor-longest Path

    [算法]trie树+xor路径 [题解] 套路1:统计从根到每个点的xor路径和,由于xor的自反性,两个点到根的xor路径和异或起来就得到两点间路径和. 然后问题就是找到n个值中异或值最大的两个值, ...

  7. bzoj 1954 &amp&semi; poj 3764 The xor-longest Path dfs&plus;Trie

    题目大意 给定一棵n个点的带权树,求树上最长的异或和路径 题解 因为\(xor\)操作满足可结合性,所以有 \(a\text{ }xor\text{ }b\text{ }xor\text{ }b = ...

  8. 【概率DP&sol;高斯消元】BZOJ 2337&colon;&lbrack;HNOI2011&rsqb;XOR和路径

    2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 682  Solved: 384[Submit][Stat ...

  9. bzoj 2115&colon; &lbrack;Wc2011&rsqb; Xor xor高斯消元

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

随机推荐

  1. new出对象的作用

    new调用了构造函数以后 构造函数会返回一个对象的实例

  2. Nginx 简单的负载均衡配置示例

    http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html 在此记录下Nginx服务器nginx.conf的配置文件说明, ...

  3. 转:更改 centos yum 源

    centos下可以通过yum很方便快捷的安装所需的软件和库,如果yum的源不好,安装速度会非常慢,centos默认官方源似乎都是国外的,所以速度无法保证,我一直使用163的源,感觉速度不错.下面就说说 ...

  4. 加速ssh连接

    今天aws大姨妈了,也不知道是aws问题还是gfw的问题,反正我都已经问候了你们zzsbd!!! ping aws的丢包都是75%以上,这还玩个雕啊,果断去找加速的教程来看,但是发现cygwin下并没 ...

  5. 解决ORA-00904&colon; invalid identifier标识符无效

    方法/步骤 1 大部分情况下,此错误是由于引用了不存在的列名导致的.比如select name from Studtent 当studeng表中无name列时,系统就会报此错误. 2 解决思路是,确定 ...

  6. 循环ajax请求问题

    项目开发过程碰到过这种需求:需要循环发送ajax请求,请求参数和循环索引有关.第一次实现的时候用了类似下面的方法,结果发现发送到后端的参数数据都是最后一次循环的索引 for(var i=0; i&lt ...

  7. Oracle数据库 中的基础的一些语法结构

    方括号里的内容为可选项 大括号是必填 1PL/SQL结构块 DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQ ...

  8. python基础&equals;&equals;&equals;将json转换为dict的办法

    首先json是字符串. 大家都知道,字符串是用来传递信息的.json字符串实际上就是一种规定了格式的字符串, 通过这种格式,我们可以在不同的编程语言之间互相传递信息,比如我们可以把javascript ...

  9. day5-hashlib模块

    一.概述 在程序开发过程中,很多时候会涉及用户信息验证环节,这类场景下我们往往需要对字符串进行加密处理.python中也有专门的加密模块,它就是hashlib.下面章节将详述它的常见用法. 二.常见加 ...

  10. javascript&colon; 代码优化

    一.避免全局查找 在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些 function search() { //当我要使用当前页面地址和主机域 ...