BZOJ 2115 [Wc2011] Xor ——线性基
【题目分析】
显然,一个路径走过两边是不需要计算的,所以我么找到一条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 ——线性基相关推荐
- bzoj 2115: [Wc2011] Xor(DFS+线性基)
2115: [Wc2011] Xor Time Limit: 10 Sec Memory Limit: 259 MB Submit: 3853 Solved: 1609 [Submit][Stat ...
- BZOJ2115:[WC2011] Xor(线性基)
Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...
- BZOJ 2115 Wc2011 Xor DFS+高斯消元
标题效果:鉴于无向图.右侧的每个边缘,求一个1至n路径,右上路径值XOR和最大 首先,一个XOR并能为一个路径1至n简单的路径和一些简单的XOR和环 我们开始DFS获得随机的1至n简单的路径和绘图环所 ...
- 洛谷 P4151 BZOJ 2115 [WC2011]最大XOR和路径
//bzoj上的题面太丑了,导致VJ的题面也很丑,于是这题用洛谷的题面 题面描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如 ...
- 2019牛客多校第四场 B xor (线性基求交)
xor 思路 题目是要求[l,r][l, r][l,r]的所有集合是否都可以得到xxx,那么显然我们可以对这[l,r][l, r][l,r]个线性基求交,然后再特判能否xxx能否插入,如果能插入,显然 ...
- BZOJ 2460: [BeiJing2011]元素 线性基
2460: [BeiJing2011]元素 Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法 ...
- [BZOJ]2460: [BeiJing2011]元素 线性基+贪心
Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越 ...
- HDU 3949 XOR 线性基
http://acm.hdu.edu.cn/showproblem.php?pid=3949 求异或第k小,结论是第k小就是 k二进制的第i位为1就把i位的线性基异或上去. 但是这道题和上一道线性基不 ...
- bzoj 3811: 玛里苟斯【线性基+期望dp】
这个输出可是有点恶心啊--WA*inf,最后抄了别人的输出方法orz 还有注意会爆long long,要开unsigned long long 对于k==1,单独考虑每一位i,如果这一位为1则有0.5 ...
最新文章
- dojo Quick Start/dojo入门手册--package机制
- Using jQuery to add a dynamic “Back To Top” floating button with smooth scroll
- Could not load driverClass “com.mysql.jdbc.Driver“
- 渲染上下文Rendering Context
- Python 爬虫框架 - PySpider
- c/c++永不过时的编程语言
- PyCharm专业版 2021.3 Anaconda安装教程
- 约瑟夫环(C语言实现)
- 企业邮箱怎么发邮件?企业邮箱无法收发信是怎么回事?
- 华东交通大学计算机全国排名,华东交通大学世界排名、中国排名、专业排名
- spring boot 2.0 配置logback日志
- .Net Core 阿里云短信服务Demo
- 《春·蜂》processing下的动画技术交互应用
- 微信公众平台编辑模式
- idea中用git管理文件之后文件颜色的含义
- android 命名空间的使用
- 【NLP入门教程】五、命名实体识别
- 二项分布的期望和方差
- android 我来告诉你图片应该放在那个文件夹下
- python常用数值处理函数_SciPy基础数据操作函数
热门文章
- centos solr 部署到 tomcat 上
- geotrellis使用(三十)使用geotrellis读取PostGIS空间数据
- 4、3ds Max 的基本模型和操作 之 3ds Max 的对象操作
- cross-compile/交叉编译 适用于ARM的ko文件
- [AaronYang]那天有个小孩跟我说Js-NodeJS[AY0]-EJS
- Cooperative Content Distribution and Traffic Engineering
- 你不能准时下班的根本原因是……
- 社交类产品设计的9个点,整不好会挨怼~
- 浅谈用户体验的 4 个维度
- 最大团问题-分支界限法