然后呢这道题其实很简单

我们先考虑一种简单的情况,从1直接走到n(不管怎么走的,反正就是走) 然后就能找到一个路径了

这个走的过程用各种zmj算法都能过

然后呢我们发现如果直接走基本不会得到最优解,考虑模拟退火

考虑增广

一个增广方法是,从某一个点开始走到一个环,在环上走一圈,然后原路返回,如图

然后呢这个图画的有点丑了

我们发现,增广的路径就是环上的路径,往返的路径上两次xor就xor没了,对答案的贡献为0

然后所以我们枚举所有环,把这条环的xor扔进线性基,查询时候直接用1到n的一条路径去查询这个长度被线性基乱搞后的最大值

这题也就蓝题难度吧竟然是黑题

#include <bits/stdc++.h>
using namespace std; struct edge
{
int v;
long long w;
int ne;
}a[200010]; int n, m, tmp;
int h[50010];
long long dis[50010];
bool vis[50010];
long long linear_basis[70]; void add(int u, int v, long long w)
{
a[++tmp] = (edge){v, w, h[u]};
h[u] = tmp;
} bool insert(long long x)
{
for (int i = 63; i >= 0; i--)
{
if (x & (1LL << i))
{
if(linear_basis[i] == 0)
{
linear_basis[i] = x;
return true;
}
x ^= linear_basis[i];
}
}
return false;
} long long query(long long x)
{
for (int i = 63; i >= 0; i--)
if ((x ^ linear_basis[i]) > x)
x ^= linear_basis[i];
return x;
} void search(int x, long long y)
{
dis[x] = y;
vis[x] = 1;
for (int i = h[x]; i != 0; i = a[i].ne)
if (vis[a[i].v] == 0)
search(a[i].v, y ^ a[i].w);
else
insert(y ^ a[i].w ^ dis[a[i].v]);
} int main()
{
scanf("%d%d", &n, &m);
long long z;
for (int x, y, i = 1; i <= m; i++)
{
scanf("%d%d%lld", &x, &y, &z);
add(x, y, z);
add(y, x, z);
}
search(1, 0);
printf("%lld\n", query(dis[n]));
return 0;
}

luogu4151 最大XOR和路径的更多相关文章

  1. 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径

    2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 682  Solved: 384[Submit][Stat ...

  2. BZOJ2337: [HNOI2011]XOR和路径

    题解: 异或操作是每一位独立的,所以我们可以考虑每一位分开做. 假设当前正在处理第k位 那令f[i]表示从i到n 为1的概率.因为不是有向无环图(绿豆蛙的归宿),所以我们要用到高斯消元. 若有边i-& ...

  3. BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )

    一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 --------------------------------------------------- ...

  4. BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]

    2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...

  5. 【BZOJ2337】Xor和路径(高斯消元)

    [BZOJ2337]Xor和路径(高斯消元) 题面 BZOJ 题解 我应该多学点套路: 对于xor之类的位运算,要想到每一位拆开算贡献 所以,对于每一位拆开来看 好了,既然是按位来算 我们就只需要计算 ...

  6. [HNOI2011]XOR和路径 && [HNOI2013]游走

    [HNOI2011]XOR和路径 题目大意 具体题目:戳我 题目: 给定一个n个点,m条边的有重边.有自环的无向图,其中每个边都有一个边权. 现在随机选择一条1到n的路径,路径权值为这条路径上所有边权 ...

  7. 洛谷 P4151 [WC2011]最大XOR和路径 解题报告

    P4151 [WC2011]最大XOR和路径 题意 求无向带权图的最大异或路径 范围 思路还是很厉害的,上午想了好一会儿都不知道怎么做 先随便求出一颗生成树,然后每条返祖边都可以出现一个环,从的路径上 ...

  8. [WC2011]最大XOR和路径 线性基

    [WC2011]最大XOR和路径 LG传送门 需要充分发掘经过路径的性质:首先注意不一定是简单路径,但由于统计的是异或值,重复走是不会被统计到的,考虑对于任意一条从\(1\)到\(n\)的路径的有效部 ...

  9. P4151 [WC2011]最大XOR和路径

    P4151 [WC2011]最大XOR和路径 一道妙极了的题. 首先直接从1走到n 然后现在图上有很多环 所以可以在走到n之后走到环上一个点,再走一遍环,再原路返回.这样就会xor上环的权值. 然后只 ...

随机推荐

  1. String是基本的数据类型吗?

    String不是基本的数据类型,是final修饰的java类,java中的基本类型一共有8个,它们分别为: 1 字符类型:byte,char 2 基本整型:short,int,long 3 浮点型:f ...

  2. iOS消息转发机制

    iOS消息转发机制 “消息派发系统”(message-dispatch system) 若想令类能够理解某条消息,我们必须实现出对应的方法才行.但是,在编译器向类发送其无法解读的消息时并不会报错,因为 ...

  3. python3 中 requests 框架

    原文的文件地址:http://blog.csdn.net/shanzhizi/article/details/50903748 一.安装 Requests 通过pip安装 pip install re ...

  4. C语言学习笔记--函数

    1. C 语言中的函数 (1)函数的由来: 程序 = 数据 + 算法→C 程序 = 数据 + 函数 (2)模块化程序设计 (3)C 语言中的模块 2. 面向过程的程序设计 (1)面向过程是一种以过程为 ...

  5. sort排序应用

      private static int SortTestObj2Compare(TestSortClass obj1, TestSortClass obj2)        {            ...

  6. java中用正则表达式判断中文字符串中是否含有英文或者数字

    public static boolean includingNUM(String str)throws  Exception{ Pattern p  = Pattern.compile(" ...

  7. java字符编码转换研究(转)

    1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...

  8. JavaScript的作用域与闭包

    JavaScript的作用域以函数为界,不同的函数拥有相对独立的作用域.函数内部可以声明和访问全局变量,也可以声明局部变量(使用var关键字,函数的参数也是局部变量),但函数外部无法访问内部的局部变量 ...

  9. Win10系统下安装360安全卫士,安装完成后一直提示

     新买的电脑,第一次安装360安全卫士,安装完成后一直报这个错误,显示MiniUI.dll文件不存在,但这个文件就在安装目录下:后面有多次卸载.安装都能能成功,求助大神        

  10. 框架和事务 非常 有用 hibernate和mybatis区别

    1****第一章 Hibernate与MyBatis 章 开发对比 开发学习 Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用 ...