Link:https://www.lydsy.com/JudgeOnline/problem.php?id=2115

Algorithm:

此题一看到是求异或和最大问题的,立即想到使用线性基解题

最终结果发现是由任意一条1~N的路径和若干个环构成的

证明:

1、如果答案中有环不在任意选取的路径上,可以先走到环再走回来

由于异或的自反性,相当于只增加了环的异或和

2、如果答案中的1~N的路径不是这条,那么这条路径一定和当前任意选取的路径形成一个环

那么我们只要再增加这个环上的异或和,就相当于“更改路径”

那么接下来,我们只要dfs找到所有的环并记录其异或和

选取任意一条1~N的路径作为初始值,和所有环形成的线性基贪心加合即可

Code:

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef pair<ll,ll> P; inline ll read() //IO优化中的int要改为LL!!!
{
char ch;ll num,f=;
while(!isdigit(ch=getchar())) f|=(ch=='-');
num=ch-'';
while(isdigit(ch=getchar())) num=num*+ch-'';
return f?-num:num;
} #define F first
#define S second const int MAXN=5e4+;
const int MAXM=2e5+;
vector<P> G[MAXN];
int n,m;
bool vis[MAXN];
ll dist[MAXN],base[],cir[MAXM],res,cnt=; void dfs(int x)
{
vis[x]=true;
for(int i=;i<G[x].size();i++) //寻找返祖边
{
P v=G[x][i];
if(!vis[v.F]) dist[v.F]=dist[x]^v.S,dfs(v.F);
else cir[++cnt]=dist[x]^dist[v.F]^v.S;
}
} int main()
{
n=read();m=read();
for(int i=;i<=m;i++)
{
ll x=read(),y=read(),z=read();
G[x].push_back(P(y,z));
G[y].push_back(P(x,z));
}
dfs();res=dist[n]; for(int i=;i<=cnt;i++) //构建线性基
for(int j=;j>=;j--)
{
if(!(cir[i]>>j)) continue;
if(!base[j]){base[j]=cir[i];break;}
cir[i]^=base[j];
} for(int i=;i>=;i--) res=max(res,res^base[i]);
cout << res;
return ;
}

Review:

1、异或和MAX  <----->   线性基

2、解决有环问题时,不一定要找到所有的环

大多时候,只要找到dfs返祖边形成的环即可

此题是因为一个含有多条返祖边形成的环的异或和就等于几个“小环”的异或总和

3、充分利用异或的自反性

求解异或和问题中,环+异或可以实现“换路”、“远程加环”等操作

4、如果res的初始值不为0,在和线性基添加时不可以看到1就添加,MAX更稳妥

[BZOJ 2115] Xor的更多相关文章

  1. bzoj 2115 Xor - 线性基 - 贪心

    题目传送门 这是个通往vjudge的虫洞 这是个通往bzoj的虫洞 题目大意 问点$1$到点$n$的最大异或路径. 因为重复走一条边后,它的贡献会被消去.所以这条路径中有贡献的边可以看成是一条$1$到 ...

  2. ACM学习历程—BZOJ 2115 Xor(dfs && 独立回路 && xor高斯消元)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2115 题目大意是求一条从1到n的路径,使得路径xor和最大. 可以发现想枚举1到n的所有路 ...

  3. BZOJ 2115 Xor(抑或值最大路径)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2115 题意:给出一个带权无向图.求一条1到n的路径使得路径上权值的抑或值最大? 思路:( ...

  4. BZOJ 2115 Xor(线性基)

    题意:给定一个n<=50000个点m<=100000条边的无向联通图,每条边上有一个权值wi<=1e18.请你求一条从1到n的路径,使得路径上的边的异或和最大. 任意一条1到n的路径 ...

  5. -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】

    [把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...

  6. BZOJ 2337 XOR和路径 | 高斯消元 期望 位运算

    BZOJ 2337 XOR和路径 题解 这道题和游走那道题很像,但又不是完全相同. 因为异或,所以我们考虑拆位,分别考虑每一位: 设x[u]是从点u出发.到达点n时这一位异或和是1的概率. 对于所有这 ...

  7. bzoj 2115: [Wc2011] Xor xor高斯消元

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

  8. BZOJ 2115: [Wc2011] Xor

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2794  Solved: 1184 [Submit][Stat ...

  9. BZOJ 2115: [Wc2011] Xor DFS + 线性基

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MB Description Input 第一行包含两个整数N和 M, 表示该无向图中 ...

随机推荐

  1. 插头dp题表

    bzoj1814: Ural 1519 Formula 1 bzoj3125: CITY bzoj1210: [HNOI2004]邮递员 bzoj2331: [SCOI2011]地板 bzoj1187 ...

  2. NOIP2010 引水入城 贪心+DFS

    我们先把简单的不能搞死,具题意可证:每个蓄水长的管辖区域一定是连续的.证明:既然我们已经能了那么我们就可以说如果这个区间不是连续的那我们取出这个区间中间阻隔开的那一段,那么对于这一整个区间来说水源不可 ...

  3. 转:极小极大搜索方法、负值最大算法和Alpha-Beta搜索方法

    转自:极小极大搜索方法.负值最大算法和Alpha-Beta搜索方法 1. 极小极大搜索方法    一般应用在博弈搜索中,比如:围棋,五子棋,象棋等.结果有三种可能:胜利.失败和平局.暴力搜索,如果想通 ...

  4. JVM 性能排查--汇总

    参考:http://blog.sina.com.cn/s/blog_61d758500102wnus.html

  5. request.getParameterValues与request.getParameter的区别

    一. 简单的对比 request.getParameter用的比较多,相对熟悉 request.getParameterValues(String   name)是获得如checkbox类(名字相同, ...

  6. Bzoj4197 寿司晚宴

    Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 种不同 ...

  7. 【CF1027F】Session in BSU(dsu,基环树)

    题意:给出n场考试,每场考试有2天可以通过(第ai与bi天).每天最多参加一场考试,现在要求所有考试全部通过的最小天数 n<=1e6,1<=a[i]<b[i]<1e9 思路:F ...

  8. [POJ2954&POJ1265]皮克定理的应用两例

    皮克定理: 在一个多边形中.用I表示多边形内部的点数,E来表示多边形边上的点数,S表示多边形的面积. 满足:S:=I+E/2-1; 解决这一类题可能运用到的: 求E,一条边(x1,y1,x2,y2)上 ...

  9. [bzoj1770][Usaco2009 Nov]lights 燈——Gauss消元法

    题意 给定一个无向图,初始状态所有点均为黑,如果更改一个点,那么它和与它相邻的点全部会被更改.一个点被更改当它的颜色与之前相反. 题解 第一道Gauss消元题.所谓gauss消元,就是使用初等行列式变 ...

  10. SpringMvc基础知识(一)

    目录: springmvc框架原理(掌握) 前端控制器.处理器映射器.处理器适配器.视图解析器 springmvc入门程序 目的:对前端控制器.处理器映射器.处理器适配器.视图解析器学习 非注解的处理 ...