BZOJ3569 : DZY Loves Chinese II
这回是真·强制在线了,首先这道题就是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的更多相关文章
- [BZOJ3569]DZY Loves Chinese II(随机化+线性基)
3569: DZY Loves Chinese II Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1515 Solved: 569[Submit][S ...
- BZOJ3569 DZY Loves Chinese II(随机化+树上差分+线性基)
上一题的强制在线版.对图跑出一个dfs树,给非树边赋上随机权值,树边的权值为覆盖他的非树边权值的异或.这样如果某条树边和覆盖他的非树边都被割掉(即图不连通),他们的异或值就为0.每次对询问看有没有子集 ...
- BZOJ3569:DZY Loves Chinese II(线性基)
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图, ...
- bzoj3569 DZY Loves Chinese II & bzoj3237 [AHOI2013] 连通图
给一个无向连通图,多次询问,每次询问给 k 条边,问删除这 k 条边后图的连通性,对于 bzoj3237 可以离线,对于 bzoj3569 强制在线 $n,m,q \leq 500000,k \leq ...
- BZOJ3569: DZY Loves Chinese II(线性基构造)
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图, ...
- 题解-bzoj3569 DZY Loves Chinese II
Problem bzoj 题意概要:给定\(n\)点\(m\)边无向连通图,\(Q\)次询问删除\(k\)条边后是否仍然连通,强制在线 Solution 半年前考到过这类题目(询问删除任意两条边使得图 ...
- 【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 ...
- 【BZOJ3563/3569】DZY Loves Chinese II 线性基神题
[BZOJ3563/3569]DZY Loves Chinese II Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以 ...
- 【bzoj3569】 DZY Loves Chinese II
http://www.lydsy.com/JudgeOnline/problem.php?id=3569 (题目链接) 题意 给出一个无向图,$Q$组询问,每次询问将原图断掉$C$条边后是否还连通.在 ...
随机推荐
- MyEclipse破解(MEGen.java)
步骤: 1.将MEGen.java粘贴到任意web项目下,运行结果如下: 2.输入注册名:如sun,得到注册码: 3.Window >> Preference >> S ...
- UISegmentedControl
1. NSArray *segmentedArray = [[NSArray alloc]initWithObjects:@"1",@"2",@"3& ...
- Android Programming: Pushing the Limits -- Chapter 2: Efficient Java Code for Android
Android's Dalvik Java 与 Java SE 进行比较 Java代码优化 内存管理与分配 Android的多线程操作 Android’s Dalvik Java 与 Java SE ...
- jquery学习笔记---Dom操作
一.DOM操作的分类 DOM(document object model)是一种与浏览器.平台.语言无关的接口,使用该接口可以访问页面中的·所有组件.DOM的操作可以分为DOM Core.HTML-D ...
- Redis笔记(六)Redis的消息通知
Redis的消息通知可以使用List类型的LPUSH和RPOP(左进右出),当然更方便的是直接使用Redis的Pub/Sub(发布/订阅)模式. >>使用List实现队列 使用列表类型的L ...
- wp8 入门到精通 数据库更新字段(一)
public class UserInfoDB : BaseDB { public UserInfoDB() : base(@"Data Source=isostore:\MakeLove\ ...
- 如何通过阅读C标准来解决C语言语法问题
有时候必须非常专注地阅读ANSI C标准才能找到某个问题的答案.一位销售工程师把下面这段代码作为测试用例发给Sun的编译小组. foo(const char **p) {} int main(int ...
- mathematica练习程序(图像取反)
代码很简单,就四行,我想到可以用mathematica干点什么了. 有人通过mathematica编程研究过视频编解码算法么,挺有意思,可以尝试一下. img=Import["f:/lena ...
- barabasilab-networkScience学习笔记2-图理论
第一次接触复杂性科学是在一本叫think complexity的书上,Allen博士很好的讲述了数据结构与复杂性科学,barabasi是一个知名的复杂性网络科学家,barabasilab则是他所主导的 ...
- Strust2 初体验
Struts2的第一个案例 首先我们需要引入架包 entity: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package ...