洛谷P4151 最大XOR和路径 [WC2011] 线性基+图论
正解:线性基+图论
解题报告:
首先可以思考一下有意义的路径会是什么样子,,,那就一定是一条链+一些环
挺显然的因为一条路径原路返回有没有意义辣?所以一定是走一条链+一些环(当然也可以麻油环,,,差不多差不多QAQ
所以可以考虑先把所有环找出来,加入线性基中,现在要考虑的就只有找一条链这个事儿辣
然后这儿可以发现一个性质,就是其实只要拿1号节点到n号节点的任意一条链出来就欧克了,显然的是所有1到n的路径都能通过异或若干个环得到,好像挺显然的,意会下趴QAQ
然后找环什么的还挺简单的,,,dfs一下找到返祖边就加入线性基就好QAQ
over,感觉最近博客越来越短辣QAQ
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define ll long long
#define int long long
#define gc getchar()
#define mp make_pair
#define t(i) edge[i].to
#define w(i) edge[i].wei
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ll i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];i;i=edge[i].nxt) const int N=+,M=+;
int n,m,poww[]={},val[N<<],ed_cnt,head[N<<];
bool vis[N];
struct ed{int to,nxt,wei;}edge[M<<];
struct xxj
{
ll a[];int num_cnt;
il void clr(){memset(a,,sizeof(a));num_cnt=;}
il void insert(ll x){if(num_cnt==)return;my(i,,)if(x&poww[i]){x^=a[i];if(!a[i]){a[i]=x,++num_cnt;return;}}}
il ll mx(ll ret){my(i,,)ret=max(ret,ret^a[i]);return ret;}
}gdgs; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch<'' || ch>''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il void ad(ri x,ri y,ri z){edge[++ed_cnt]=(ed){x,head[y],z};head[y]=ed_cnt;edge[++ed_cnt]=(ed){y,head[x],z};head[x]=ed_cnt;}
void dfs(ri x,ri fa)
{vis[x]=;e(i,x)if(t(i)^fa)if(!vis[t(i)])val[t(i)]=val[x]^w(i),dfs(t(i),x);else gdgs.insert(val[x]^val[t(i)]^w(i));} main()
{
// freopen(".in","r",stdin);freopen(".out","w",stdout);
rp(i,,)poww[i]=poww[i-]<<;
n=read();m=read();rp(i,,m){ri x=read(),y=read(),z=read();ad(x,y,z);ad(y,x,z);}
dfs(,);printf("%lld\n",gdgs.mx(val[n]));
return ;
}
//有个要注意的点,,,虽然我不知道为什么QAQ
//就空间要开两倍,,,不知道为什么但我开始都开的一半然后RE了三个点,,,我就偷懒都开了两倍QAQ
放下代码QAQ
洛谷P4151 最大XOR和路径 [WC2011] 线性基+图论的更多相关文章
- 洛谷P4151 [WC2011]最大XOR和路径(线性基)
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 首先看到异或就想到线性基 我们考虑有一条路径,那么从这条路径走到图中的任意一个环再走回这条路径上,对答案的贡献是这个环的异或和,走到这个环上的路径对 ...
- [WC2011]最大XOR和路径(线性基)
P4151 [WC2011]最大XOR和路径 题目描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如下( 1 表示真, 0 表 ...
- [WC2011]最大XOR和路径(贪心+线性基)
题目大意:给一张无向图,求一条1-n的路径,是路径边权的异或和最小. 题解 这道题的思路很妙,首先我们可以随便找出一条从1到n的路径来,然后我们可以选一些环. 其实不管这个环和这条路径有怎样的关系,我 ...
- 洛谷P3211 [HNOI2011]XOR和路径(期望dp+高斯消元)
传送门 高斯消元还是一如既往的难打……板子都背不来……Kelin大佬太强啦 不知道大佬们是怎么发现可以按位考虑贡献,求出每一位是$1$的概率 然后设$f[u]$表示$u->n$的路径上这一位为$ ...
- 洛谷P4301 [CQOI2013]新Nim游戏(线性基)
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 后手在什么时候能够获胜呢?只有在他能构造出一个子集的异或和为0时(这个应该是nim博弈的结论了吧) 那么为了必胜,我们就要取到没有子集异或和为0为止 ...
- 洛谷P3292 [SCOI2016]幸运数字(倍增+线性基)
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 第一眼:这不会是个倍增LCA暴力合并线性基吧…… 打了一发……A了? 所以这真的是个暴力倍增LCA合并线性基么…… ps:据某大佬说其实可以离线之后 ...
- 洛谷$P$4301 $[CQOI2013]$新$Nim$游戏 线性基+博弈论
正解:线性基 解题报告: 传送门! 这题其实就是个博弈论+线性基,,,而且博弈论还是最最基础的那个结论,然后线性基也是最最基础的那个板子$QwQ$ 首先做这题的话需要一点点儿博弈论的小技能,,,这题的 ...
- 洛谷 P4151 [WC2011]最大XOR和路径 解题报告
P4151 [WC2011]最大XOR和路径 题意 求无向带权图的最大异或路径 范围 思路还是很厉害的,上午想了好一会儿都不知道怎么做 先随便求出一颗生成树,然后每条返祖边都可以出现一个环,从的路径上 ...
- 洛谷 P4151 BZOJ 2115 [WC2011]最大XOR和路径
//bzoj上的题面太丑了,导致VJ的题面也很丑,于是这题用洛谷的题面 题面描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如 ...
随机推荐
- Serializable接口
Serializable这个接口起啥作用呢?? 这个接口没有提供任何方法,我们实现它有什么意义呢? Serializable接口是启用其序列化功能的接口.Serializable接口中没有任何方法,一 ...
- Vue.js常用指令:v-show和v-if
一.v-show指令 v-show指令可以用来动态的控制DOM元素的显示或隐藏.v-show后面跟的是判断条件,语法如下: v-show="判断变量" 例如: v-show=&qu ...
- Puppet file资源使用
1.文件管理介绍: 可管理的项目: 支持文件和目录 设置文件及目录的所有者及权限 恢复文件(包括文件的内容.权限及所有者) 清理目录以及子目录 2. 可使用参数: ensure :指 ...
- 一款Redis客户端,可以作为Redis Desktop manager的有效补充或替代
一.由来 对于redis客户端,我和大多数人一样,都是用Redis Desktop Manager. 但我发现个问题,我的版本是0.9.1.771. 我这个版本有个问题,就是如果value太长的话,不 ...
- Socket 服务端使用多线程实现多客户端通讯实例
socket通信原理 Java多线程实现Socket通讯 1.服务端 import java.io.IOException; import java.net.ServerSocket; import ...
- 6.29一个_rcv 面试题
#coding:utf-8 #2018-6-29 16:30:34 #类调用属性,属性没有,用__getatrr__魔法方法! #目的打印出 think different itcast class ...
- python 中面向对象的概念
原文 域和作用空间 本地域,函数域(nonlocal)和 全局域(global) def scope_test(): def do_local(): spam = "local spam&q ...
- 有时候不用explode截取字符串了,可以用用substr()
substr() 截取出来的是一位数组, 比如:<?php echo substr("Hello world",6); ?> 意思就是截取出前六个字符,只 ...
- MySQL介绍,下载,安装,配置
MySQL用了很多年了,今天写个总结. 一.介绍 MySQL是开源软件,后来归Oracle所有.开源便于软件的完善改进.但开源不等于滥用,也不等于完全免费.MySQL有商业版,商业用途是付费的.也有免 ...
- hdu4847 Wow!Such Doge!【字符串】【暴力】
Wow! Such Doge! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...