题意:http://www.lydsy.com/JudgeOnline/problem.php?id=2115

sol  :首先考虑处理出DFS树,那么树上的所有非树边可以构成一个简单环

   因为所有不在1-n的路径上的树边都会被走过去再走回来,对答案无法构成影响

   所以答案即为1-n路径的异或和^(所有环的异或和任选)的最大值

   那么问题转化为从k个数中任选使其异或一个特定的数得异或和最大

   直接跑线性基即可

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define int long long
using namespace std;
const int Mx=;
int n,m,cnt,ans,now,tmp,val[Mx],cir[Mx],vis[Mx];
int tot,head[Mx],nxt[Mx],ver[Mx],cost[Mx];
void add(int x,int y,int z)
{
nxt[++tot]=head[x];
ver[tot]=y;
cost[tot]=z;
head[x]=tot;
}
void dfs(int x)
{
vis[x]=;
for(int i=head[x];i;i=nxt[i])
{
int y=ver[i];
if(!vis[y])
val[y]=val[x]^cost[i],dfs(y);
else
cir[++cnt]=val[x]^val[y]^cost[i];
}
}
void gauss()
{
now=,m=;
while(m--)
{
tmp=; for(int j=now;j<=cnt;j++) if((cir[j]>>m)&) { tmp=j;break; }
if(tmp)
{
swap(cir[tmp],cir[now]);
for(int j=;j<=cnt;j++) if(j!=now&&((cir[j]>>m)&)) cir[j]^=cir[now];
now++;
}
}
}
signed main()
{
scanf("%lld%lld",&n,&m);
for(int i=,x,y,z;i<=m;i++)
{
scanf("%lld%lld%lld",&x,&y,&z);
add(x,y,z),add(y,x,z);
}
dfs(); gauss(); ans=val[n];
for(int i=;i<now;i++) ans=max(ans,ans^cir[i]);
cout<<ans<<endl;
return ;
}

bzoj2115【WC2011】XOR的更多相关文章

  1. 【bzoj2115】【wc2011】Xor

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

  2. bzoj2115【WC2001】Xor

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2059  Solved: 856 [Submit][Statu ...

  3. BZOJ 2115 【Wc2011】 Xor

    Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...

  4. 【BZOJ2337】Xor和路径(高斯消元)

    [BZOJ2337]Xor和路径(高斯消元) 题面 BZOJ 题解 我应该多学点套路: 对于xor之类的位运算,要想到每一位拆开算贡献 所以,对于每一位拆开来看 好了,既然是按位来算 我们就只需要计算 ...

  5. 【HDU3949】XOR

    [题目大意] 给定一个数组,求这些数组通过异或能得到的数中的第k小是多少. 传送门:http://vjudge.net/problem/HDU-3949 [题解] 首先高斯消元求出线性基,然后将k按照 ...

  6. 【整理】XOR:从陌生到头晕

    一:解决XOR常用的方法: 在vjudge上面输入关键词xor,然后按照顺序刷了一些题. 然后大概悟出了一些的的套路: 常用的有贪心,主要是利用二进制的一些性质,即贪心最大值的尽量高位取1. 然后有前 ...

  7. 【CF242E】Xor Segment

    题目大意:给定一个长度为 N 的序列,支持两种询问,即:区间异或,区间求和. 题解:加深了对线段树的理解. 对于线段树维护的变量一定是易于 modify 的,对于查询的答案只需用维护的东西进行组合而成 ...

  8. 【ATcoder】Xor Sum 2

    题目大意:给定一个 N 个点的序列,求有多少个区间满足\(\oplus_{i=l}^ra[i]=\sum\limits_{i=l}^ra[i]\). 题解: 小结论:\(a\oplus b=a+b\r ...

  9. 【agc016D】XOR Replace

    Portal --> agc016D Description ​ 一个序列,一次操作将某个位置变成整个序列的异或和,现在给定一个目标序列,问最少几步可以得到目标序列 ​ Solution ​ 翀 ...

随机推荐

  1. Maven父子模块引入依赖问题

    公共模块如何放到父pom中,而子pom无需再次引入???

  2. windows下安装php依赖关系管理工具composer

    1.安装Composer Composer是PHP的依赖管理工具之一,官方网站 http://getcomposer.org/ .它支持多种安装方式,对于在win下做开发的草来说,最便捷的方式就是下载 ...

  3. CXF学习记录

    1 apache CXF入门 1.1 下载 官网:cxf.apache.org 下载CXF的开发包: Apache CXF = Celtix + Xfire 支持多种协议: SOAP1.1,1.2 X ...

  4. 切换Ubuntu超级管理员

    对Ubuntu进行拷贝命令时,如果不是root用户,会出现权限不足的情况,无法操作

  5. 线程池是什么?Java四种线程池的使用介绍

    使用线程池的好处有很多,比如节省系统资源的开销,节省创建和销毁线程的时间等,当我们需要处理的任务较多时,就可以使用线程池,可能还有很多用户不知道Java线程池如何使用?下面小编给大家分享Java四种线 ...

  6. hibernate系列之二

    首先先介绍一下持久化: 持久化:将程序数据在持久状态和瞬时状态间转换的机制:即将内存的数据永久存在关系型数据库中: 持久化类的编写规则: 持久化类需要提供无参构造方法: 持久化类的属性需要私有,对私有 ...

  7. 关于springboot配置文件的另类读取方法

    一.背景故事   前阵子我接手了公司另外一个同事手里的项目,项目是用的springboot 写的,但是比较坑的就是这个项目写的有点不伦不类.虽然是用的springboot,但由于他是拿了一堆代码拼凑起 ...

  8. JZOJ 4757. 树上摩托

    Description Sherco是一位经验丰富的魔♂法师.Sherco在第零次圣杯战争中取得了胜利,并取得了王之宝藏——王の树.他想把这棵树砍去任意条边,拆成若干棵新树,并装饰在他的摩托上,让他的 ...

  9. list,tuple,set,dict汇总

      有序/无序 追加/删除元素 元素可/不可重复 元素类型 创建方式 List 有序 可追加删除追加:list.append(item),list.insert(index,item)删除:list. ...

  10. 用Python学分析 - 单因素方差分析

    单因素方差分析(One-Way Analysis of Variance) 判断控制变量是否对观测变量产生了显著影响 分析步骤 1. 建立检验假设 - H0:不同因子水平间的均值无差异 - H1:不同 ...