「BZOJ2115」「WC2011」 Xor
来源:互联网 发布:js href click 编辑:程序博客网 时间:2024/05/19 16:19
Description
Input
第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目。 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 Di的无向边。 图中可能有重边或自环。
Output
仅包含一个整数,表示最大的XOR和(十进制结果),注意输出后加换行回车。
Sample Input
5 7 1 2 2 1 3 2 2 4 1 2 5 1 4 5 3 5 3 4 4 3 2
Sample Output
6
HINT
题解
我 BZOJ2115 A辣!
我 BZOJ2115 A辣!
我 BZOJ2115 A辣!
我会线性基辣!
线性基第一道非模板题
首先,假设你会线性基,即知道怎么求
然后我们分析这道题。
首先,题目描述非常吓人,但是仔细一分析,就会非常简单:对于一条
然后对于基中的所有向量
根据线性基的对角矩阵性质,如果
我们按二进制位从高到低考虑:
如果
如果
如果
因此这个贪心思路是正确的。
复杂度
My Code
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>#define B 62using namespace std;typedef long long ll;struct edge{ int to, nxt; ll w;}e[200005];int h[50005], cnt = 1;ll a[1000005], b[105];int n, m, N;ll ans;ll dis[50005];int vis[50005];void addedge(int x, int y, ll w){ cnt++; e[cnt].to = y; e[cnt].nxt = h[x]; e[cnt].w = w; h[x] = cnt; cnt++; e[cnt].to = x; e[cnt].nxt = h[y]; e[cnt].w = w; h[y] = cnt;}void dfs(int x, int ii){ vis[x] = 1; for(int i = h[x]; i; i = e[i].nxt){ if((i ^ 1) == ii) continue; if(!vis[e[i].to]) { dis[e[i].to] = dis[x] ^ e[i].w; dfs(e[i].to, i); }else{ a[++N] = dis[e[i].to] ^ dis[x] ^ e[i].w; } }}void solve(){ for(int i = 1; i <= N; i ++){ for(int j = B; j >= 0; j --){ if((a[i] >> j) & 1){ if(b[j]) a[i] ^= b[j]; else{ b[j] = a[i]; for(int k = j - 1; k >= 0; k --) if(((b[j] >> k) & 1) && b[k]) b[j] ^= b[k]; for(int k = j + 1; k <= B; k ++) if((b[k] >> j) & 1) b[k] ^= b[j]; break; } } } }}int main(){ scanf("%d%d", &n, &m); for(int i = 1; i <= m; i ++){ int x, y; ll z; scanf("%d%d%lld", &x, &y, &z); addedge(x, y, z); } dfs(1, 0); solve(); ans = dis[n]; for(int i = B; i >= 0; i --){ if((ans ^ b[i]) > ans) ans = ans ^ b[i]; } printf("%lld\n", ans); return 0;}
- 「BZOJ2115」「WC2011」 Xor
- 【bzoj2115】【Wc2011】Xor
- 【bzoj2115】[Wc2011] Xor 线性代数
- BZOJ2115: [Wc2011] Xor
- 【bzoj2115】[Wc2011] Xor
- BZOJ2115: [Wc2011] Xor
- 【WC2011】bzoj2115 Xor
- [题解]bzoj2115(WC2011)Xor
- [BZOJ2115][Wc2011] Xor && dfs+高斯消元
- 【bzoj2115】[Wc2011] Xor 高斯消元+dfs
- 线性基 bzoj2115 [Wc2011] Xor
- BZOJ2115 [Wc2011] Xor 【线性基】
- 【BZOJ2115】 [Wc2011] Xor——线性基
- BZOJ2115: [Wc2011] Xor(异或方程组)
- [DFS树 + 线性基] BZOJ2115: [Wc2011] Xor
- 【BZOJ2115】【Wc2011】 Xor 线性基 异或最长路
- [BZOJ2115][Wc2011] Xor(dfs+高斯消元求线性基+贪心)
- BZOJ2115 Xor
- ps技术
- JavaScript--for循环和获取元素的第二种方法
- 1、数组的基本操作
- 程 | 深度学习 + OpenCV,Python 实现实时视频目标检测 机器之心 09-21
- 感想:为以后的自己加油
- 「BZOJ2115」「WC2011」 Xor
- PI算法
- LintCode: 114. 不同的路径 Java
- kali linux2.0 安装nessus家庭版
- springmvc如何设置多视图器,springmvc 多个 ViewResolver
- uva-1025
- tensorflow实现简单卷积网络进行mnist分类
- Python学习笔记——基础数学运算(只要五分钟就能掌握系列)
- MySQL5.5安装教程