首页 > 其他分享 >异或

异或

时间:2024-05-02 16:11:07浏览次数:19  
标签:选出 路径 异或 简单 最优 我们

这道题目的思路比较好

由于\(1\)到\(n\)的路径很多,我们猜想,任意选一条路径可以通过某种异或运算来得到最优解

证明:假设我们选出的路径不是最优路径,那么对于另一条最优路径,一定可以通过我们选出的路径异或上若干个简单环来达到。举个例子说明

假设我们选出的是直线段\(AE\),最优的路线是\(A\)先走直线到\(D\),然后通过两个圆弧\(DCB\)到达\(B\),最后再走直线到\(E\),那么最优路线的值就等于我们选出的路径异或上图中的两个简单环

上述结论启发我们,找到图中所有的简单环,然后用我们选出来的路径加上若干个简单环能够到达的最大值就是答案

但是我们任选简单环,是否一定能够找到一条路径对应呢?答案是肯定的,对于任意一个简单环,我们先从\(1\)走到环上的某一点\(x\),然后走一遍这个环到\(x\),再从\(x\)又回到\(1\)号点就相当于得到了这个环的异或值

于是我们找出所有简单环考虑线性基

当我们化出行简化梯形矩阵的时候,记住每个非零行是若干个\(a\)的异或,也就是说我们任取非零行来异或一定可以在原来的\(a\)中找到一些\(a\)来异或起来对应;而这些非零行又是极大线性无关组,显然可以覆盖问题空间

注意行简化梯形矩阵有“异或运算”这道题目所说的性质,所以我们依次从高位到低位贪心即可

找出所有简单环的代码要记住

标签:选出,路径,异或,简单,最优,我们
From: https://www.cnblogs.com/dingxingdi/p/18170286

相关文章

  • 异或与区间加题解
    异或与区间加题解简要题意给定\(n,m,K,a_{1...n}\),和\(m\)个三元组\((x_i,y_i,z_i)\),定义\(calc(l,r)=a_l\bigoplusa_{l+1}\bigoplus...\bigoplusa_r\)。对于每个三元组\((x,y,z)\),对所有满足\(x\lel\ler\ley\,\calc(l,r)=K\)的区间\((l,r)\)内的每个数\(b......
  • 异或哈希
    问题:https://codeforces.com/contest/1175/problem/F关键点:随机化+异或1.为何要异或:忽略顺序将1~n随机的一一映射到longlong值域内,形成新的映射数组b。再根据异或的特点,只需要判断:b[1]⊕b[2]⊕…………⊕b[n]==b[a[l]]⊕b[a[l+1]]⊕……⊕b[a[r]]2.为何要随机,因为若不随......
  • 最大异或对
    实在是看不懂了....下面这个代码是求最大异或对,的值至于那个异或区间....实在看不懂了...还是贴一下吧#include<iostream>#include<algorithm>usingnamespacestd;intconstN=100010,M=31*N;intn;inta[N];intson[M][2],idx;//M代表一个数字串二进制可以到多长vo......
  • P9745 「KDOI-06-S」树上异或
    P9745「KDOI-06-S」树上异或位运算trick+树形dp看到题目中贡献的计算,可以想到乘法分配律,也就是一个连通块的乘积可以直接乘在当前所有方案的权值之和上。可以考虑特殊性质:链。那么树的问题就变成了序列问题。容易设\(f_i\)表示\(i\)以前的节点的所有断边方案权值和。转移......
  • C# 异或校验两种方法
    12publicbyteGetXor(byte[]data)3{4byteCheckCode=0;5intlen=data.Length;6for(inti=0;i<len;i++)7{8CheckCode^=data[i];9......
  • [网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
    文章目录一.工具&术语1.网安术语2.常用工具3.推荐文章二.常见攻击1.SQL注入2.XSS跨站3.越权漏洞4.CSRF跨站请求伪造5.支付漏洞三.音乐异或解密示例四.总结一.工具&术语1.网安术语常见安全网站及论坛:看雪(https://bbs.pediy.com/)安全客(https://www.anquanke.com)fre......
  • 异或运算在算法中的神奇应用
    1.什么是异或两个二进制数进行异或运算时,每一位上的数相同则结果为0,不同则结果为1。示例:6^7=?转化成二进制:6=1107=1116^7=110^111=001=1简单记:异或就是二进制的无进位相加。还有个同或运算:相同为1,不同为0,和异或是反的。2.异或运算的特性任何数与0异或,结果还是这......
  • P4551 最长异或路径 题解
    题目链接:最长异或路径看到树上路径问题,且是异或和这种,先思考树上前缀和转化为前缀和问题。如果我们预处理出\(pre[curr]\)表示\(curr\)这个点到根的前缀异或值,那么很显然我们路径的两个点\(u\)与\(v\)的\(pre[u]\opluspre[v]\)和传统的加法的树上前缀和并不一样,因为异......
  • 异或运算
    异或就是无进位相加。每一位对应相加,进位被舍弃。A01101110B10011101->11110011从低往高位:0加1是1,1加0是1,1加1有一个进位,结果为零,对于下一位,忽略进位,1加1还是0,有一个进位,再下一位,忽略进位,1加0结果为1....异或运算满足交换律,结合律。同一批数字无论异或顺序如何,最终结果......
  • P4551 最长异或路径
    原题链接题解1.任意两点间的异或和等于他们到根节点的异或和的异或,令每个点到根节点的异或值为\(path[i]\)2.建立01字典树,塞入所有\(path[i]\)然后遍历每个点,找出每个点异或最大对应的点3.如何找?往当前\(path[i]\)的每一位相反的方向移动code#include<bits/stdc++.h>u......