Codeforces 题目传送门 & 洛谷题目传送门 一道线性基的综合题 %%%%%% 首先注意到"非简单路径""异或和"等字眼,可以本能地想到线性基.根据线性基那一套理论,一个值 \(v\) 可以表示为某个 \(1\to 1\) 的非简单回路上边权的异或和当前节点它可以表示为 \(1\) 所在连通块的若干个 \(\ge 1\) 简单环上权值的异或和.其次我们还可以注意到本题至于很小,最高不过 \(2^5-1=31\),而稍微打个表即可发现大小为 \(5\)…
正解:线性基+图论 解题报告: 传送门 首先可以思考一下有意义的路径会是什么样子,,,那就一定是一条链+一些环 挺显然的因为一条路径原路返回有没有意义辣?所以一定是走一条链+一些环(当然也可以麻油环,,,差不多差不多QAQ 所以可以考虑先把所有环找出来,加入线性基中,现在要考虑的就只有找一条链这个事儿辣 然后这儿可以发现一个性质,就是其实只要拿1号节点到n号节点的任意一条链出来就欧克了,显然的是所有1到n的路径都能通过异或若干个环得到,好像挺显然的,意会下趴QAQ 然后找环什么的还挺简单的,,,…
原文链接https://www.cnblogs.com/cly-none/p/9711279.html 题意:求有多少个非空集合\(S \subset N\)满足,\(\forall a,b \in S, a \bigotimes b \in S\),且\(S\)中的最大元素不超过\(n\).对\(10^9 + 7\)取模. \(n \leq 10^9\) 显然,每个合法的集合\(S\)都可以由一个线性基来生成.然而,一个集合可以有多个线性基.如果我们能让每个合法集合和每个符合某条件的线性基一一…
Codeforces 938G Shortest Path Queries 一张连通图,三种操作 1.给x和y之间加上边权为d的边,保证不会产生重边 2.删除x和y之间的边,保证此边之前存在 3.询问x到y的路径异或最小值 保证图在任意时刻连通 首先连通图路径异或相当于从x到y的任意一条路径再异或上若干个环得到的,只要在dfs过程中把非树边成的环丢到线性基里就好了,其他环一定可以通过这些环异或组合出来 有加边删边操作怎么做呢?线段树时间分治!注意到不能保证在线段树的任意一个节点图是连通的,需要用…
662A,戳我戳我 Solution: 我们先取\(ans=a[1] \bigoplus a[2] \bigoplus ... \bigoplus a[n]\),然后我们定义\(c[i]=a[i] \bigoplus b[i]\),我们就可以知道每异或一个\(c[i]\),就是更换选取\(a[i],b[i]\),这里很好想. 然后我们要处理出\(c[i]\),中有多少子集异或和为\(ans\),这样异或出来总和为\(0\),这个我们就可以用线性基了. 然后后面求子集我还是没有太弄懂,看了题解也有…
题目传送门 题意: 给出 n 个数,q次区间查询,每次查询,让你选择任意个下标为 [ l , r ] 区间内的任意数,使这些数异或起来最大,输出最大值. 思路:离线加线性基. 线性基学习博客1 线性基学习博客2 对于此题,先把区间按照 r 从小到大排序,然后依次处理这些区间,每次插入线性基时,优先保留下标比较大的线性基.查询时,只异或上下标大于 l 的值. 记住异或的符号的优先级很低,所以  if( res^p[i] > res )这样的代码是会wa死的,要注意(这道题这么写,样例都过不了) #…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2115 给定一个带权无向图,要找出从1到n路径权值异或和最大的那一条的路径异或和. 考虑1到n的任意一条路径,都可以表示为1到n的一条路径,加上图上任意的一些环(1所在的那个连通块).之所以可以这样,是因为图是连通的,而且无向的,走过去也可以走回来,所以假设当前走到了i号点,我想去走一些环,那么可以i->j->在环j上走一圈->j->i,这条路径上仅仅是异或上了一次环的权值(…
CF388D. Fox and Perfect Sets 题意:求最大元素\(le n\)的线性空间的个数 给神题跪了 orz 容易想到 每个线性基对应唯一的线性空间,我们可以统计满足条件的对应空间不同的线性基个数 每一位我们插入一个向量,就获得了这一位的控制权,否则这一位是自由的 因为要\(le n\),可以使用数位DP 从高位到低位考虑,设当前第i位,已经插入了j个向量 没有天际线的限制 插入向量i的话,之前的向量位i必须是0,1种情况 不插入向量i的话,之前的向量位i可以任选,\(2^j\…
这个输出可是有点恶心啊--WA*inf,最后抄了别人的输出方法orz 还有注意会爆long long,要开unsigned long long 对于k==1,单独考虑每一位i,如果这一位为1则有0.5的概率贡献1<<i,否则没有贡献,因为这一位选了奇数偶数个1的概率是一样的 对于k==2,考虑乘法的意义,也就是i位和j位同时为1的概率p,贡献(1<<(i+j))*p,这个p,如果全部的a[k]都是在i位和j为相同则是p=0.5(因为这样一来ij的值就关联了),否则p=0.25 对于…
#include<bits/stdc++.h> using namespace std; #define fi first #define se second #define mp make_pair #define pb push_back #define rep(i, a, b) for(int i=(a); i<(b); i++) #define sz(x) (int)x.size() #define de(x) cout<< #x<<" = &q…