[WC 2011]最大Xor和路径
题目大意:
给你一张n个点,m条边的无向图,每条边都有一个权值,求:1到n的路径权值和的最大值。
题解:
任意一条路径都能够由一条简单路径(任意一条),在接上若干个环构成(如果不与这条简单路径相连就走过去再走回来)。
那么在对这些环进行分类:
1、直接与简单路径相连
相交的重复部分不算就可以了。
2、不与简单路径相连
我们需要跑过去,再跑回来对吧,这样的话,不管我们是怎么跑的,非环的路径对答案的贡献始终为0,(抵消了嘛)。
这样的话,我们只需要用这几个环来构造线性基即可,最后再找个最大值就行啦!
代码:
- #include<bits/stdc++.h>
- #define ll long long
- using namespace std;
- const int N=50005,M=200005;
- ll b[65],dist[M],d[N],z,ans;
- int head[N],vet[M],nxt[M],n,m,x,y,tot;
- bool vis[N],used[M];
- void add(int x,int y,ll z){
- nxt[++tot]=head[x];
- vet[tot]=y;
- head[x]=tot;
- dist[tot]=z;
- }
- void insert(ll x){
- for (int i=63;i>=0;i--)
- if (x>>i)
- if (b[i]) x^=b[i];
- else {b[i]=x; break;}
- }
- void dfs(int u){ //找环
- vis[u]=true;
- for (int i=head[u];i;i=nxt[i]){
- int v=vet[i];
- if (!vis[v]){
- d[v]=d[u]^dist[i];
- dfs(v);
- } else
- if (!used[i^1]){
- used[i^1]=true;
- insert(d[u]^d[v]^dist[i]);
- }
- }
- }
- int main(){
- scanf("%d %d",&n,&m); tot=1;
- for (int i=1;i<=m;i++){
- scanf("%d %d %lld",&x,&y,&z);
- add(x,y,z); add(y,x,z);
- }
- dfs(1);
- ans=d[n];
- for (int i=63;i>=0;i--)
- if ((ans^b[i])>ans) ans=ans^b[i];
- printf("%lld\n",ans);
- return 0;
- }
[WC 2011]最大Xor和路径的更多相关文章
- 【BZOJ 2115】【WC 2011】Xor
计算1到n的一条路径使得路径上的值xor和最大. 先任意走一条路径计算xor和,然后dfs的时候处理出所有的环的xor和,这样对于所有的环的xor和求线性基,在任意走出的路径的xor和上贪心即可. 正 ...
- 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径
2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 682 Solved: 384[Submit][Stat ...
- BZOJ2337: [HNOI2011]XOR和路径
题解: 异或操作是每一位独立的,所以我们可以考虑每一位分开做. 假设当前正在处理第k位 那令f[i]表示从i到n 为1的概率.因为不是有向无环图(绿豆蛙的归宿),所以我们要用到高斯消元. 若有边i-& ...
- BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 --------------------------------------------------- ...
- BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...
- 【BZOJ2337】Xor和路径(高斯消元)
[BZOJ2337]Xor和路径(高斯消元) 题面 BZOJ 题解 我应该多学点套路: 对于xor之类的位运算,要想到每一位拆开算贡献 所以,对于每一位拆开来看 好了,既然是按位来算 我们就只需要计算 ...
- [HNOI2011]XOR和路径 && [HNOI2013]游走
[HNOI2011]XOR和路径 题目大意 具体题目:戳我 题目: 给定一个n个点,m条边的有重边.有自环的无向图,其中每个边都有一个边权. 现在随机选择一条1到n的路径,路径权值为这条路径上所有边权 ...
- 洛谷 P4151 [WC2011]最大XOR和路径 解题报告
P4151 [WC2011]最大XOR和路径 题意 求无向带权图的最大异或路径 范围 思路还是很厉害的,上午想了好一会儿都不知道怎么做 先随便求出一颗生成树,然后每条返祖边都可以出现一个环,从的路径上 ...
- [WC2011]最大XOR和路径 线性基
[WC2011]最大XOR和路径 LG传送门 需要充分发掘经过路径的性质:首先注意不一定是简单路径,但由于统计的是异或值,重复走是不会被统计到的,考虑对于任意一条从\(1\)到\(n\)的路径的有效部 ...
随机推荐
- SpiderMonkey教程
https://technotales.wordpress.com/2009/06/07/spidermonkey-introduction/ https://developer.mozilla.or ...
- oracle 11G R2卸载说明
oracle 11G R2数据库卸载
- 自编Basic脚本 用BasicIntepreter执行 打印九九乘法表
源码下载:https://files.cnblogs.com/files/heyang78/BasicInterpreter2-20200601-2.rar 用编程语言打印九九乘法表不难,用自编解释器 ...
- IDEA编写JavaWeb出现乱码,成功解决!
使用IDEA写JavaWeb项目时,总会出现编码出错等问题,比如下面这样,页面显示出来一大堆乱码,下面跟着我来操作一下,可以成功解决! 首先在IDEA安装目录下有一个:bin的文件夹,打开后找到如下两 ...
- Apache 和 Nginx 下绑定域名
Apache 方法一 参考:链接 版本:2.3 配置文件位置:/usr/share/doc/httpd/httpd-vhosts.conf 添加域名和站点信息: vim /usr/share/doc/ ...
- 安装模块中出现的问题:不是内部或外部命令、pip 命令不存在、Unknown or unsupported command 'install'
#cmd下python.pip不是内部或外部命令——表示环境变量没有加# path中新增1.python的安装目录# 2.python下scripts的目录 #提示 pip 命令不存在——表示环境变量 ...
- oracle之分组函数
分组函数 5.1 最重要的五个分组函数 sum(); avg(); count(); max(); min(). 数值类型可以使用所有组函数SQL> select sum(sal) sum, a ...
- UI中table写表格
- Openstack 一直在调度中解决
查看日志/var/log/nova/nova-scheduler.log,/var/log/nova/nova-compute.log ,均无报错 查看/var/log/nova/nova-condu ...
- [Liunx]apt-get安装软件:依赖冲突问题及解决
正常使用apt-get install安装出现依赖冲突问题: 大概是这样: ga@ubuntu:$ sudo apt-get install gcc-5-base:i386 正在读取软件包列表... ...