题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2115

给定一个带权无向图,要找出从1到n路径权值异或和最大的那一条的路径异或和。

考虑1到n的任意一条路径,都可以表示为1到n的一条路径,加上图上任意的一些环(1所在的那个连通块)。之所以可以这样,是因为图是连通的,而且无向的,走过去也可以走回来,所以假设当前走到了i号点,我想去走一些环,那么可以i->j->在环j上走一圈->j->i,这条路径上仅仅是异或上了一次环的权值(i->j和j->i的权值被抵消了)。

所以就把所有的环插入线性基就好了。最大值可以从高位到低位贪心来搞。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long ll;
  5.  
  6. const int maxn=;
  7. const int maxm=*;
  8.  
  9. vector< pair<int,ll> > G[maxn];
  10. ll a[maxn];
  11.  
  12. vector<ll> base;
  13. void insert(ll x)
  14. {
  15. for (int i=;i<base.size();i++) x=min(x,x^base[i]);
  16. if (x) base.push_back(x);
  17. }
  18.  
  19. void dfs(int u,int fa,ll now)
  20. {
  21. a[u]=now;
  22. for (int i=;i<G[u].size();i++)
  23. {
  24. int v=G[u][i].first;
  25. ll w=G[u][i].second;
  26. if (a[v]==-) dfs(v,u,now^w);
  27. else insert(now^a[v]^w);
  28. }
  29. }
  30.  
  31. int main()
  32. {
  33. int n,m;
  34. scanf("%d%d",&n,&m);
  35. memset(a,-,sizeof(a));
  36. for (int i=;i<=m;i++)
  37. {
  38. int u,v;
  39. ll w;
  40. scanf("%d%d%lld",&u,&v,&w);
  41. G[u].push_back(make_pair(v,w));
  42. G[v].push_back(make_pair(u,w));
  43. }
  44. dfs(,,);
  45. sort(base.begin(),base.end());
  46. ll ans=a[n];
  47. for (int i=base.size()-;i>=;i--) ans=max(ans,ans^base[i]);
  48. printf("%lld",ans);
  49. return ;
  50. }

[bzoj 2115]线性基+图论的更多相关文章

  1. bzoj 2115 线性基

    这种路径异或问题,可以转换为一条路径和若干个环的线性组合,然后就能用线性基搞了. 复习了一波线性基. #include<bits/stdc++.h> #define LL long lon ...

  2. 洛谷P4151 最大XOR和路径 [WC2011] 线性基+图论

    正解:线性基+图论 解题报告: 传送门 首先可以思考一下有意义的路径会是什么样子,,,那就一定是一条链+一些环 挺显然的因为一条路径原路返回有没有意义辣?所以一定是走一条链+一些环(当然也可以麻油环, ...

  3. bzoj 2460 线性基

    #include<bits/stdc++.h> #define ll long long #define LL long long #define int long long using ...

  4. [bzoj 2460]线性基+贪心+证明过程

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 网上很多题目都没说这个题目的证明,只说了贪心策略,我比较愚钝,在大神眼里的显然的策略 ...

  5. BZOJ - 2844 线性基

    题意:求给定的数在原数组中的异或组合中的排名(非去重) 因为线性基中\(b[j]=1\)表示该位肯定存在,所以给定的数如果含有该位,由严格递增和集合枚举可得,排名必然加上\(2^j\)(不是完全对角就 ...

  6. [bzoj 2844]线性基+高斯消元

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2844 又用到线性基+高斯消元的套路题了,因为经过高斯消元以后的线性基有非常好的序关系,所以 ...

  7. 就是要第一个出场的albus 【BZOJ】 线性基

    就是我代码里读入之后的那一部分. 1.(一下a[]为原数组 a'[]为线性基) 线性基 中的a'[i]其实 是 原来的a[]中的某个子集(2^n个子集中的某个) 异或出来的  可能会有其他的子集与它异 ...

  8. Codeforces 1299D - Around the World(线性基+图论+dp)

    Codeforces 题目传送门 & 洛谷题目传送门 一道线性基的综合题 %%%%%% 首先注意到"非简单路径""异或和"等字眼,可以本能地想到线性基. ...

  9. BZOJ 3105 线性基 高斯消元

    思路: 按照从大到小排个序 维护两个数组 一个是消元后的 另一个是 按照消元的位置排的 不断 维护从大到小 (呃具体见代码) //By SiriusRen #include <cstdio> ...

随机推荐

  1. 基于pygame的打砖块游戏,做到一半,不带做了

    跟着一个博主做的,前面的变量的定义全是内个哥们的,没带任何改动,就做了个界面,背景音乐,绘制了个小球,绘制了挡板 小球可以撞到边界反弹,然后做了砖块,定义了一个存放砖块的列表,,,就没有下文了 原博主 ...

  2. jmeter测试报告优化

    1.下载jmeter.results.shanhe.me.xsl 将该文件拷贝到jmeter\extras目录下 2.修改jmeter.results.shanhe.me.xsl 这里直接拷贝 jme ...

  3. Python3爬虫(二)网络爬虫的尺寸与约束

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.网络爬虫的尺寸: 1.小规模,数据量小,爬取速度不敏感,Requests库,爬取网页 2.中规模,数据规模较大 ...

  4. 2426: [HAOI2010]工厂选址

    2426: [HAOI2010]工厂选址 链接 代码: /* 贪心: 奇妙!!!!! 因为所有的煤矿不是给新厂,就是给旧厂(而且旧厂的得到b) 为了使费用最小,感性的理解,那么一个煤矿给哪个厂,取决于 ...

  5. 读取hbase数据到mysql

    先写一个自己的MyRecordWriter类 extends RecordWriter package calllog; import java.io.IOException; import java ...

  6. jdk带的一些工具,强悍

    这些工具有的已经接触到了,功能很强悍,但是使用也有点复杂(参数) 在代码中使用System.setProperty()或者在启动程序时使用-D选项设置代理服务器地址和端口 看看别人的研究: JDK自带 ...

  7. XPivot 用户手册及版本更新公示

    此文仅介绍XPivot的通用功能,如有对项目中定制的高级功能感兴趣的可留言讨论 XPivot当前版本v2.2 [2015-04-20发布] v2.1 下载链接: http://pan.baidu.co ...

  8. FlaskWeb开发从入门到放弃(二)

    第5章 章节五 01 内容概要 02 内容回顾 03 面向对象相关补充:metaclass(一) 04 面向对象相关补充:metaclass(二) 05 WTforms实例化流程分析(一) 06 WT ...

  9. 【转】ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    原文链接:https://www.cnblogs.com/yilezhu/p/9241261.html 引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必 ...

  10. Web负载均衡技术

    Web负载均衡(Load Balancing),简单地说就是给我们的服务器集群分配“工作任务”,而采用恰当的分配方式,对于保护处于后端的Web服务器来说,非常重要. 负载均衡的策略有很多,我们从简单的 ...