这回是真·强制在线了,首先这道题就是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. 安装mysql后ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了

    ps -A | grep -i mysql kill 列出来的进程 service mysql start 我的问题就解决了 ------------------------------------- ...

  2. Spring学习笔记—装配Bean

    在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...

  3. 自定义log日志

        Log.cs (这个已经不能用了,用下面的问题解决方案) using System; using System.Collections.Generic; using System.Web; u ...

  4. C#值类型与引用类型

    值类型(Value Type),值类型实例通常分配在线程的堆栈(stack)上,并且不包含任何指向实例数据的指针,因为变量本身就包含了其实例数据.其在MSDN的定义为值类型直接包含它们的数据,值类型的 ...

  5. SQLAlchemy增删改查基本操作,及SQL基本技能样码(join,group)

    练了一天,基本的东东应该有感觉了. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Tabl ...

  6. git 本地仓库和远程仓库及本地分支和远程分支

    从远程git仓库签出代码:   $ git clone git://aaa.com/git_project.git (远程git服务器项目所在地址) 当你需要克隆远程项目到本地时,默认会把项目保存在名 ...

  7. golang json 包简单分析

    首先上代码: func main() { b := true a1, _ := json.Marshal(b) a2, _ := Marshal(b) fmt.Println(string(a1)) ...

  8. android 面试题

    一,什么是OOM (1)先从定义开始:Android(Java)中常见的容易引起内存泄漏的不良代码Android主要应用在嵌入式设备当中,而嵌入式设备由于一些众所周知的条件限制,通常都不会有很高的配置 ...

  9. [SQL]查询及删除重复记录的SQL语句

    一:查询及删除重复记录的SQL语句1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select ...

  10. SQLServer 维护脚本分享(11)部分DBCC及系统存储过程

    --DBCC命令与用法 DBCC HELP('?') DBCC HELP('useroptions') DBCC USEROPTIONS WITH NO_INFOMSGS --当前DB的区及文件 DB ...