[BZOJ3569]DZY Loves Chinese II(随机化+线性基)
3569: DZY Loves Chinese II
Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 1515 Solved: 569
[Submit][Status][Discuss]Description
神校XJ之学霸兮,Dzy皇考曰JC。摄提贞于孟陬兮,惟庚寅Dzy以降。纷Dzy既有此内美兮,又重之以修能。遂降临于OI界,欲以神力而凌♂辱众生。今Dzy有一魞歄图,其上有N座祭坛,又有M条膴蠁边。时而Dzy狂WA而怒发冲冠,神力外溢,遂有K条膴蠁边灰飞烟灭。而后俟其日A50题则又令其复原。(可视为立即复原)然若有祭坛无法相互到达,Dzy之神力便会大减,于是欲知其是否连通。Input
第一行N,M接下来M行x,y:表示M条膴蠁边,依次编号接下来一行Q接下来Q行:每行第一个数K而后K个编号c1~cK:表示K条边,编号为c1~cK为了体现在线,c1~cK均需异或之前回答为连通的个数Output
对于每个询问输出:连通则为‘Connected’,不连通则为‘Disconnected’(不加引号)Sample Input
5 10
2 1
3 2
4 2
5 1
5 3
4 1
4 3
5 2
3 1
5 4
5
1 1
3 7 0 3
4 0 7 4 6
2 2 7
4 5 0 2 13Sample Output
Connected
Connected
Connected
Connected
DisconnectedHINT
N≤100000 M≤500000 Q≤50000 1≤K≤15
数据保证没有重边与自环
Tip:请学会使用搜索引擎
Source
BZOJ3237的强制在线版,卡掉了CDQ分治。
有一种很神的随机化,配合线性基解决。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#define rep(i,l,r) for (int i=l; i<=r; i++)
#define For(i,x) for (int i=h[x],k; i; i=nxt[i])
typedef long long ll;
using namespace std; const int N=,M=,SS=;
int n,m,Q,cnt=,u,v,x,k,ans,h[N],nxt[M],to[M],val[N],fa[N],a[];
bool vis[N],use[M];
struct E{ int x,y,v; }e[M];
void add(int u,int v){ nxt[++cnt]=h[u]; h[u]=cnt; to[cnt]=v; } void dfs(int x,int f){
vis[x]=;
For(i,x) if ((k=to[i])!=f && !vis[k]) use[i>>]=,fa[k]=x,dfs(k,x);
} void dfs2(int x){
For(i,x) if (fa[k=to[i]]==x)
dfs2(k),e[i>>].v^=val[k],val[x]^=val[k];
} int main(){
freopen("bzoj3569.in","r",stdin);
freopen("bzoj3569.out","w",stdout);
scanf("%d%d",&n,&m); srand();
rep(i,,m) scanf("%d%d",&e[i].x,&e[i].y),add(e[i].x,e[i].y),add(e[i].y,e[i].x);
dfs(,);
rep(i,,m) if (!use[i]) x=rand()%SS+,e[i].v=x,val[e[i].x]^=x,val[e[i].y]^=x;
dfs2(); scanf("%d",&Q);
while (Q--){
scanf("%d",&k); memset(a,,sizeof(a)); bool f=;
rep(i,,k){
scanf("%d",&x); x^=ans; x=e[x].v;
for (int j=; ~j; j--){
if (!((x>>j)&)) continue;
if (!a[j]) { a[j]=x; break; }
x^=a[j];
}
if (!x) f=;
}
if (!f) puts("Disconnected"); else puts("Connected"),ans++;
}
return ;
}
[BZOJ3569]DZY Loves Chinese II(随机化+线性基)的更多相关文章
- 【BZOJ 3569】DZY Loves Chinese II 随机化+线性基
用到一个结论——[先建树,再给每个非树边一个权值,每个树边的权值为覆盖他的非树边的权值的异或和,然后如果给出的边存在一个非空子集异或和为0则不连通,否则连通](必须保证每条边的出现和消失只能由自己产生 ...
- 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
Problem bzoj 题意概要:给定\(n\)点\(m\)边无向连通图,\(Q\)次询问删除\(k\)条边后是否仍然连通,强制在线 Solution 半年前考到过这类题目(询问删除任意两条边使得图 ...
- BZOJ3569: DZY Loves Chinese II(线性基构造)
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图, ...
- BZOJ3569 : DZY Loves Chinese II
这回是真·强制在线了,首先这道题就是AHOI2013连通图的加强版,那道题k最大只有4 那道题的做法是: 取一个生成树,对每条非树边取一个随机权值, 对每条树边设为“覆盖它的所有非树边”的权值的xor ...
- 【BZOJ3563/3569】DZY Loves Chinese II 线性基神题
[BZOJ3563/3569]DZY Loves Chinese II Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以 ...
- 【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 ...
随机推荐
- .net 匿名方法
匿名方法 核心就是lambda语法,下面是使用举例: var conn= MySqlHelper.GetConn(); var list=conn.Query<User>("SE ...
- 【已解决】UBuntu16.04软件中心更新后只有桌面
出现问题之前 安装好系统之后,成功启动系统,根据软件中心提示,升级电脑安装的软件,如下图所示.点击install(安装)开始更新,之后无任何提示,其实这个时候已经出现了升级异常. 呈现问题 操作步骤一 ...
- 【python基础】--常用数据结构
list tuple dict set四种常用数据结构 list list 有序的集合,可以随时添加.删除其中元素值; 支持list嵌套模式, >>> p = ['a','b']&g ...
- hexo站点地图
将网站链接提交到百度 百度搜索引擎提交入口 有三种验证方式,我选择Html标签验证,在themes\next\layout\_partials\head.swing中添加验证代码: <meta ...
- 网络namespace
sduo sysctl -w net.ipv4.conf.all.forwarding=1 sudo iptables -t nat -A POSTROUTING -s 172.18.0.0/24 ...
- HTML5_纯JS实现上传文件显示文件大小,文件信息,上传进度_不使用JS库
前台 html <input type="file" id="_netLogo" onchange="fileSelected();" ...
- kindeditor编辑器获取不到修改后的新文本
在编辑文章的功能中,文章内容使用了kindeditor编辑器进行处理,但是修改文本后保存时发现获取到的内容还是修改前的文本内容. 引用编辑器的标签: <textarea id="txt ...
- 《c程序设计语言》读书笔记-4.2-扩充atof函数
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> ...
- 《c程序设计语言》读书笔记-4.1-判断字符串在另一个字符串中的位置
#include <io.h> #include <stdio.h> #include <string.h> #include <stdlib.h> # ...
- 《c程序设计语言》-2.6~2.8
#include <stdio.h> unsigned setbits(unsigned x, int p, int n, unsigned y) { return (x & (( ...