#include<bits/stdc++.h> using namespace std; #define N 10005 int a[N],n,k,q; struct LB{ int b[35]; LB(){memset(b,0,sizeof b);} int check(int x){ for(i... ...
分类:
其他好文 时间:
2019-10-07 00:39:26
阅读次数:
84
魔法之龙玛里苟斯最近在为加基森拍卖师的削弱而感到伤心,于是他想了一道数学题。 S 是一个可重集合,S={a1,a2,…,an}。等概率随机取 S 的一个子集 A={ai1,…,aim}。 计算出 A 中所有元素异或和 x, 求 xk 的期望。 如果结果是整数,直接输出。如果结果是小数(显然这个小数是 ...
分类:
其他好文 时间:
2019-10-06 09:48:58
阅读次数:
70
已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x <= n }, S 的幂集2^S定义为S 所有子集构成的集合。 定义映射 f : 2^S -> Z f(空集) = 0 f(T) = XOR A[t](异或和) 对于一切t属于T现在albus把2^S中每个集合的 ...
分类:
其他好文 时间:
2019-10-05 16:09:51
阅读次数:
73
问题描述 "LG3812" 题解 线性基是一类擅长解决异或问题的数据结构(也不算数据结构吧...就是一种玄学的东西) 对于数列 $a$ ,它的线性基 $d$ 为 出现 $1$ 的最高位在第 $i$ 位的数 (这里借用了 ""帅到报警"的题解" )。 构造方法 对于每一个尝试插入的数 $x$ ,找出它 ...
分类:
其他好文 时间:
2019-10-04 09:13:56
阅读次数:
83
[toc] 首先,要求可以离线 。 线段树分治有两种。 类型一 操作基于区间,单点询问。 有时,进行的一种操作可以快速完成,但是,要实现这种操作的逆操作较难。 因为,通常情况下,需要实现的逆操作都是很久以前执行的。 但是,如果只撤销上次操作,就会简单得多。 比如,维护一些连通性,或直径,线性基等问题 ...
分类:
其他好文 时间:
2019-09-30 23:58:17
阅读次数:
192
线性基主要用于解决子集异或问题。 cpp include using namespace std; typedef long long LL; struct linear_basis { vector s; int n, zero; linear_basis(int _n) { n = _n; s. ...
分类:
其他好文 时间:
2019-09-27 20:54:55
阅读次数:
67
传送门 ?题意 一个数组a有n个数 m个操作 操作① 询问$[l,r]$区间的异或值 操作② 在数组末尾追加一个数x,数组长度变为$n+1$ 其中$l,r$不直接给出,其中$l=l%n+1,r=r%n+1$ 其中$x=x^lastans$($lastens$为上一次询问的答案) ?思路 强制在线的线 ...
分类:
其他好文 时间:
2019-09-27 19:13:42
阅读次数:
89
"题目" 首先我们想想不加边删边怎么做。 先随便找一棵生成树,然后枚举每条边,把新生成的环的长度放到线性基里。 对于每次询问,把树上路径放到线性基里查询最小值。 如果有加边,每次加边就好了。 想想对于删边应该如何做。 我们把每次询问加一个时间,那么我们每条边都有一个存在时间段。 对于每次询问,只有时 ...
分类:
其他好文 时间:
2019-09-15 18:56:39
阅读次数:
121
分析 我们发现任取条路径 对于路径外的环一定可以将它完整的取到 而对于和路径有交的环相当于用一段新路径代替原来的一段路径 所以我们只需求出任意一个1到n的路径和图上所有环的值 然后借助线性基求出异或最大值即可 代码 ...
分类:
其他好文 时间:
2019-09-14 19:40:03
阅读次数:
96