【题目分析】

显然,一个路径走过两边是不需要计算的,所以我么找到一条1-n的路径,然后向该异或值不断异或简单环即可。

但是找出所有简单环是相当复杂的,我们只需要dfs一遍,找出所有的环路即可,因为所有的简单环都可以经过各种各样的异或得到。

然后线性基,在从高位向低位贪心即可,至于证明,需要拟阵的相关知识。

【代码】

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>#include <set>
#include <map>
#include <string>
#include <algorithm>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;#define maxn 100005
#define ll long longint read()
{int x=0,f=1; char ch=getchar();while (ch<'0'||ch>'9') {if (ch=='-') f=-1; ch=getchar();}while (ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar();}return x*f;
}int h[maxn],to[maxn<<1],ne[maxn<<1];
ll w[maxn<<1];
int en=0,n,m,vis[maxn],tot=0;
ll a[maxn<<1];
ll dis[maxn];void add(int a,int b,ll c)
{to[en]=b;w[en]=c;ne[en]=h[a];h[a]=en++;
}void dfs(int k)
{
//  printf("dfs on %d\n",k);vis[k]=1;for (int i=h[k];i>=0;i=ne[i]){if (!vis[to[i]]){dis[to[i]]=dis[k]^w[i];dfs(to[i]);}else a[++tot]=dis[k]^dis[to[i]]^w[i];}
}ll lb[64],ans;int main()
{memset(h,-1,sizeof h);scanf("%d%d",&n,&m);for (int i=1;i<=m;++i){int a,b; ll c;scanf("%d%d%lld",&a,&b,&c);add(a,b,c);add(b,a,c);}dfs(1);ans=dis[n];
//  for (int i=1;i<=n;++i) cout<<dis[i]<<" "; cout<<endl;
//  for (int i=1;i<=tot;++i) cout<<a[i]<<" ";cout<<endl;for (int i=1;i<=tot;++i){for (int j=63;j>=0;j--){if ((a[i]>>j)&1){if (!lb[j]) {lb[j]=a[i];break;}else a[i]^=lb[j];}}}for (int i=63;i>=0;i--)if (lb[i]&&((ans>>i)&1)==0) ans^=lb[i];cout<<ans<<endl;return 0;
}

  

转载于:https://www.cnblogs.com/SfailSth/p/6204776.html

BZOJ 2115 [Wc2011] Xor ——线性基相关推荐

  1. bzoj 2115: [Wc2011] Xor(DFS+线性基)

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

  2. BZOJ2115:[WC2011] Xor(线性基)

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

  3. BZOJ 2115 Wc2011 Xor DFS+高斯消元

    标题效果:鉴于无向图.右侧的每个边缘,求一个1至n路径,右上路径值XOR和最大 首先,一个XOR并能为一个路径1至n简单的路径和一些简单的XOR和环 我们开始DFS获得随机的1至n简单的路径和绘图环所 ...

  4. 洛谷 P4151 BZOJ 2115 [WC2011]最大XOR和路径

    //bzoj上的题面太丑了,导致VJ的题面也很丑,于是这题用洛谷的题面 题面描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如 ...

  5. 2019牛客多校第四场 B xor (线性基求交)

    xor 思路 题目是要求[l,r][l, r][l,r]的所有集合是否都可以得到xxx,那么显然我们可以对这[l,r][l, r][l,r]个线性基求交,然后再特判能否xxx能否插入,如果能插入,显然 ...

  6. BZOJ 2460: [BeiJing2011]元素 线性基

    2460: [BeiJing2011]元素 Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法 ...

  7. [BZOJ]2460: [BeiJing2011]元素 线性基+贪心

    Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越 ...

  8. HDU 3949 XOR 线性基

    http://acm.hdu.edu.cn/showproblem.php?pid=3949 求异或第k小,结论是第k小就是 k二进制的第i位为1就把i位的线性基异或上去. 但是这道题和上一道线性基不 ...

  9. bzoj 3811: 玛里苟斯【线性基+期望dp】

    这个输出可是有点恶心啊--WA*inf,最后抄了别人的输出方法orz 还有注意会爆long long,要开unsigned long long 对于k==1,单独考虑每一位i,如果这一位为1则有0.5 ...

最新文章

  1. dojo Quick Start/dojo入门手册--package机制
  2. Using jQuery to add a dynamic “Back To Top” floating button with smooth scroll
  3. Could not load driverClass “com.mysql.jdbc.Driver“
  4. 渲染上下文Rendering Context
  5. Python 爬虫框架 - PySpider
  6. c/c++永不过时的编程语言
  7. PyCharm专业版 2021.3 Anaconda安装教程
  8. 约瑟夫环(C语言实现)
  9. 企业邮箱怎么发邮件?企业邮箱无法收发信是怎么回事?
  10. 华东交通大学计算机全国排名,华东交通大学世界排名、中国排名、专业排名
  11. spring boot 2.0 配置logback日志
  12. .Net Core 阿里云短信服务Demo
  13. 《春·蜂》processing下的动画技术交互应用
  14. 微信公众平台编辑模式
  15. idea中用git管理文件之后文件颜色的含义
  16. android 命名空间的使用
  17. 【NLP入门教程】五、命名实体识别
  18. 二项分布的期望和方差
  19. android 我来告诉你图片应该放在那个文件夹下
  20. python常用数值处理函数_SciPy基础数据操作函数

热门文章

  1. centos solr 部署到 tomcat 上
  2. geotrellis使用(三十)使用geotrellis读取PostGIS空间数据
  3. 4、3ds Max 的基本模型和操作 之 3ds Max 的对象操作
  4. cross-compile/交叉编译 适用于ARM的ko文件
  5. [AaronYang]那天有个小孩跟我说Js-NodeJS[AY0]-EJS
  6. Cooperative Content Distribution and Traffic Engineering
  7. 你不能准时下班的根本原因是……
  8. 社交类产品设计的9个点,整不好会挨怼~
  9. 浅谈用户体验的 4 个维度
  10. 最大团问题-分支界限法