bzoj

对于这题先套路的找出一棵生成树,然后还会剩下一些非树边,要删边使得图不连通(假设先删非树边)当且仅当删掉了一条没有返祖边覆盖的树边,或者是删了两条被相同的非树边集合覆盖的树边

现在要处理这个问题.我们给所有非树边一个随机权值,然后树边的权值就是覆盖它的非树边权值异或和,这个可以树上差分实现,那么两条树边如果异或和相等就认为覆盖它们的非树边集合相同,如果一条树边异或和为0就认为没有被覆盖.如果我们的随机的值域为\(2^w\),那么出错的概率就是\(\frac{1}{2^w}\),因为一个数只有正好选中一个对应的数才会出错

先给结论.对于给出的一个边集,删掉以后不连通,当且仅当这个边集中有一个子集权值异或和为0.接下来是感性证明:如果这个子集全是非树边那应该就在别的地方直接WA了;如果有一个是树边,也就是选出来的其他非树边都是覆盖它的,所以删掉后会不连通;如果有\(\ge 2\)个树边,那么一定可以把其他非树边分别异或到树边上去,使得有两个树边异或和相同.顺便再推荐一波理性证明.所以实现可以用线性基,做到出现线性相关的子集就可以不连通

#include<bits/stdc++.h>
#define LL long long
#define uLL unsigned long long
#define db doubleusing namespace std;
const int N=1e5+10;
int rd()
{int x=0,w=1;char ch=0;while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}return x*w;
}
int to[N*10],nt[N*10],hd[N],tot=1;
void add(int x,int y)
{++tot,to[tot]=y,nt[tot]=hd[x],hd[x]=tot;++tot,to[tot]=x,nt[tot]=hd[y],hd[y]=tot;
}
int n,m,q,fa[N],de[N],sz[N],hs[N],top[N];
uLL a[N],w[N*5],bs[70];
bool vv[N*5];
void dfs1(int x)
{sz[x]=1;for(int i=hd[x];i;i=nt[i]){int y=to[i];if(de[y]) continue;vv[i>>1]=1;fa[y]=x,de[y]=de[x]+1,dfs1(y);sz[x]+=sz[y],hs[x]=sz[hs[x]]>sz[y]?hs[x]:y;}
}
void dfs2(int x)
{if(hs[x]) top[hs[x]]=top[x],dfs2(hs[x]);for(int i=hd[x];i;i=nt[i]){int y=to[i];if(!vv[i>>1]||y==fa[x]||y==hs[x]) continue;top[y]=y,dfs2(y);}
}
int glca(int x,int y)
{while(top[x]!=top[y]){if(de[top[x]]<de[top[y]]) swap(x,y);x=fa[top[x]];}return de[x]<de[y]?x:y;
}
void dfs3(int x)
{for(int i=hd[x];i;i=nt[i]){int y=to[i];if(!vv[i>>1]||y==fa[x]) continue;dfs3(y),a[x]^=a[y],w[i>>1]=a[y];}
}int main()
{n=rd(),m=rd();for(int i=1;i<=m;++i) add(rd(),rd());de[1]=1,dfs1(1);top[1]=1,dfs2(1);for(int i=1;i<=m;++i)if(!vv[i]){w[i]=(1ull*rand()<<32)|1ull*rand();int x=to[i<<1],y=to[i<<1|1],lca=glca(x,y);if(y==lca) swap(x,y);a[x]^=w[i],a[y]^=w[i];if(x!=lca) a[lca]^=w[i];}dfs3(1);q=rd();int las=0;while(q--){memset(bs,0,sizeof(bs));bool ok=0;int kk=rd();while(kk--){uLL x=w[rd()^las];for(int i=64;~i;--i)if(x>>i&1){if(!bs[i]){bs[i]=x;break;}x^=bs[i];if(!x) break;}ok|=!x;}las+=!ok;puts(ok?"Disconnected":"Connected");}return 0;
}

转载于:https://www.cnblogs.com/smyjr/p/11614760.html

bzoj 3569 DZY Loves Chinese II相关推荐

  1. DZY Loves Chinese/DZY Loves Chinese II 题解

    题目传送门1 \, 题目传送门2 题目大意: 给一张无向图,每次询问删掉一些边,然后问图是否连通,强制在线. 题解1 DZY Loves Chinese 和 DZY Loves Chinese II ...

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

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

  3. 【BZOJ3569】DZY Loves Chinese II(线性基,图的连通性)

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

  4. bzoj 3563: DZY Loves Chinese

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

  5. [bzoj 35633569]DZY Loves Chinese III

    3263是道sb题,随便水过去吧..... 3569才是正真的神题! 用dfs搞出一棵生成树,把边分为树边和非树边. 对于非树边我们随机分配一个数值给他,而树边上的值为覆盖其所有非树边权值的异或和. ...

  6. bzoj 3739 DZY loves math VIII

    3739: DZY loves math VIII Time Limit: 25 Sec Memory Limit: 512 MB Submit: 318 Solved: 50 [Submit][St ...

  7. BZOJ 3309 DZY Loves Math

    3309: DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007) ...

  8. 3563: DZY Loves Chinese - BZOJ

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

  9. BZOJ 3309: DZY Loves Math

    Description 对于正整数 n n,定义f(n)f(n)为 n n所含质因子的最大幂指数.例如f(1960)=f(23∗51∗72)=3f(1960)=f(2^3 * 5^1 * 7^2)=3 ...

最新文章

  1. ansys添加力矩_ansys中的workbench怎么添加力矩
  2. [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能(七)
  3. CentOS 6.5 PYPI本地源制作
  4. 数据挖掘-数据预处理的必要性及主要任务
  5. 跟老杨学java系列(一)前传
  6. 最短路径(SPFA算法)
  7. 计算机网络部分简答题
  8. Python应用实战- 爬虫基础入门知识必会
  9. bzoj3203: [Sdoi2013]保护出题人
  10. java8 di_java8 多个list对象用lambda求差集操作
  11. 玩转keybd_event
  12. 三极管工作原理_三极管的基本工作原理,这个讲的很全
  13. FOI冬令营 Day2
  14. Go语言中命令行参数的实现
  15. 多链NFT市场Polkarare获加密投资机构DFG战略投资
  16. MVC去掉传参时的验证:从客户端中检测到有潜在危险的Request.QueryString值
  17. 【Java】JSON转EXCEL,支持多个数组生成多个sheet、附表头替换
  18. 《正确去掉Win7快捷方式小箭头》
  19. Event Loop、宏任务和微任务(动态演示)
  20. WinEdit 的algorithm2e包自定义一个带竖线的模块代码

热门文章

  1. 【初学者 OpenMV】03 图像二值化
  2. 祝我最亲爱的老婆生日快乐^_^
  3. 根据入栈顺序判断出栈顺序是否合理
  4. Dirbuster使用
  5. Git使用小技巧【修改commit注释, 超详细】
  6. 【Windows】共享文件夹:你的系统需要 SMB2 或更高版本
  7. 用代码快速转换CAD格式工程图!AutoCAD处理控件Aspose.CAD超详演示!
  8. 超高频RFID手持机能为哪些行业带来变革?
  9. bm25算法Java代码_搜索引擎相关度算法 -BM25 JAVA实现
  10. Linux删除文件后空间未释放问题处理方法