这回是真·强制在线了,首先这道题就是AHOI2013连通图的加强版,那道题k最大只有4

那道题的做法是:

取一个生成树,对每条非树边取一个随机权值,

对每条树边设为“覆盖它的所有非树边”的权值的xor,

对于每次询问,只要某个子集的所有边xor值是0,那么就不连通,否则连通。

通过$O(2^k)$枚举每一个子集来判断,复杂度为$O(q2^k)$

这道题也是一样的方法,但是不能枚举了,

使用高斯消元求解,

如果不存在自由基,那么说明只有空集的异或值为0

复杂度:$O(32qk)$

#include<cstdio>
#include<algorithm>
#define N 100010
#define M 500010
using namespace std;
typedef long long ll;
ll ran,p1,p2,p3,P=~0U>>1;
struct edge{int x,y,next;}e[M<<1];
int i,j,k,n,m,len,x,y,c,pt[M],aa[M],l,r,last[N],fa[N],na[N],q[N],dep[N],c1[16],lastans;bool flag;
inline void add(int x,int y){e[++len].y=y;e[len].x=x;e[len].next=last[x];last[x]=len;}
inline void read(int&a){
char c;while(!((c=getchar())>='0')&&(c<='9'));a=c-'0';
while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';
}
int a[16],g[32][16];
inline int Gauss(int n){
int i,j,r,c,cnt;
for(c=cnt=0;c<n;c++){
for(r=cnt;r<31;r++)if(g[r][c])break;
if(r<31){
if(r!=cnt)for(i=0;i<n;i++)swap(g[r][i],g[cnt][i]);
for(i=cnt+1;i<31;i++)if(g[i][c])for(j=0;j<n;j++)g[i][j]^=g[cnt][j];
cnt++;
}
}
return n-cnt;
}
int main(){
for(read(n),read(m),i=1;i<=n;i++)dep[i]=P>>1;
for(i=1;i<=m;i++)read(x),read(y),add(x,y),add(y,x);
q[r=1]=1;dep[1]=0;
while(l<r)for(i=last[x=q[++l]];i;i=e[i].next)
if(dep[e[i].y]>dep[x]+1){
fa[e[i].y]=x;
na[e[i].y]=(i+1)>>1;
dep[e[i].y]=dep[x]+1;
q[++r]=e[i].y;
}else if((i&1)==0&&fa[x]!=e[i].y){
ran*=13;ran+=237;ran%=P;
pt[(i+1)>>1]=ran;
aa[e[i].x]^=pt[(i+1)>>1];
aa[e[i].y]^=pt[(i+1)>>1];
}
for(i=r;i;i--)for(j=last[x=q[i]];j;j=e[j].next)if(fa[e[j].y]==x)aa[x]^=aa[e[j].y];
for(i=1;i<=n;i++)pt[na[i]]=aa[i];
read(k);
while(k--){
for(read(c),i=0;i<c;i++)read(c1[i]),a[i]=pt[c1[i]^lastans];
for(i=0;i<31;i++)for(j=0;j<c;j++)g[i][j]=(a[j]>>i)&1;
if(flag=(Gauss(c)==0))lastans++;
puts(flag?"Connected":"Disconnected");
}
return 0;
}

  

BZOJ3569 : DZY Loves Chinese II的更多相关文章

  1. [BZOJ3569]DZY Loves Chinese II(随机化+线性基)

    3569: DZY Loves Chinese II Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1515  Solved: 569[Submit][S ...

  2. BZOJ3569 DZY Loves Chinese II(随机化+树上差分+线性基)

    上一题的强制在线版.对图跑出一个dfs树,给非树边赋上随机权值,树边的权值为覆盖他的非树边权值的异或.这样如果某条树边和覆盖他的非树边都被割掉(即图不连通),他们的异或值就为0.每次对询问看有没有子集 ...

  3. BZOJ3569:DZY Loves Chinese II(线性基)

    Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生.   今Dzy有一魞歄图, ...

  4. bzoj3569 DZY Loves Chinese II & bzoj3237 [AHOI2013] 连通图

    给一个无向连通图,多次询问,每次询问给 k 条边,问删除这 k 条边后图的连通性,对于 bzoj3237 可以离线,对于 bzoj3569 强制在线 $n,m,q \leq 500000,k \leq ...

  5. BZOJ3569: DZY Loves Chinese II(线性基构造)

    Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生.   今Dzy有一魞歄图, ...

  6. 题解-bzoj3569 DZY Loves Chinese II

    Problem bzoj 题意概要:给定\(n\)点\(m\)边无向连通图,\(Q\)次询问删除\(k\)条边后是否仍然连通,强制在线 Solution 半年前考到过这类题目(询问删除任意两条边使得图 ...

  7. 【BZOJ3569】DZY Loves Chinese II

    [BZOJ3569]DZY Loves Chinese II 题面 bzoj 题目大意: 给你一张\(N(1\leq N\leq 10^5)\)个点\(M(1\leq M\leq 5\times 10 ...

  8. 【BZOJ3563/3569】DZY Loves Chinese II 线性基神题

    [BZOJ3563/3569]DZY Loves Chinese II Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以 ...

  9. 【bzoj3569】 DZY Loves Chinese II

    http://www.lydsy.com/JudgeOnline/problem.php?id=3569 (题目链接) 题意 给出一个无向图,$Q$组询问,每次询问将原图断掉$C$条边后是否还连通.在 ...

随机推荐

  1. C#中的变量及命名规则

    变量: 1.作用 :可以让我们在计算机中存储数据 2.语法:变量类型    变量名=赋值: 3.常用的数据类型:  int   整数类型  取值范围:最大2147483647;最小-214748364 ...

  2. java1.8中Lambda表达式reduce聚合测试例子

    public class LambdaTest { public static void main(String[] args) { // 相当于foreach遍历操作结果值 Integer out ...

  3. Loadrunner之HTTP接口测试脚本实例

    接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文结果与预期结果进行比对的过程,接口测试可以通过Jav ...

  4. PL/SQL连接配置

    在Oracle安装目录oracle\product\10.2.0\db_2\NETWORK\ADMIN下修改一下三个文件: listener.ora,sqlnet.ora,tnsnames.ora l ...

  5. oracle检查点队列(checkpoint queue)

    buffer cache CBC链 按地址链 LRU  干净buffer LRUW  脏buffer  按照冷热 checkpoint queue:链buffer,①链脏块②按buffer第一次脏的时 ...

  6. html5 方框内的小球

    html5 方框内的小球 版本一 <!DOCTYPE html> <html> <head lang="en"> <meta charse ...

  7. hdu 4293 2012成都赛区网络赛 dp ****

    题意:有n个人,可任意分成若干组,然后每个人个各提供一个信息,表示他们组前面有多少人,后面有多少人.问最多有多少个信息是不冲突的. 将n个人看成一组区间,然后每个人的信息可以表示为该人所在组的区间,然 ...

  8. Effective C++ 之 Item 5:了解C++默默编写并调用哪些函数

    Effective C++ chapter 2. 构造 / 析构 / 赋值运算 (Constructors, Destructors, and Assignment Operators) Item 5 ...

  9. 六款值得推荐的android(安卓)开源框架简介(转)

    1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载: (2)  网络请求的排序(scheduli ...

  10. Win7下用IIS发布网站

    安装IIS控制面板->程序->程序和功能, 点击左侧的“打开或关闭Windows功能”把这几项都勾上吧,虽然有些不是必须的,多勾无碍. 进入IIS管理器控制面板-> 系统和安全-&g ...