BZOJ3569: DZY Loves Chinese II(线性基构造)
Description
Input
Output
Sample Input
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 13
Sample Output
Connected
Connected
Connected
Disconnected
解题思路:
考虑到将原图不连通必须切断一个点的所有联通方式
那么可以想到用一种方式来使多个元素互相抵消。
这些元素就是连同一个点的所有边。
那么使这些遍抵消的方式就是让一条边与其他异或和为0
这就需要线性无关组了。
Dfs出一颗树。
将非树边的每一条边rand上一个权值,
那么这条边能做出贡献的位置就是Dfs树上祖先的位置。
那么就向上更新,在树边处的答案就是后面相关边的异或和
最后在查询时暴力插入线性无关组中,
若出现异或和为0的情况就是所有相关的边都被删除了。
就是不连通了。
代码:
#include<ctime>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
void ade(int f,int t,int no);
typedef long long lnt;
struct pnt{
int hd;
int fa;
lnt val;
}p[];
struct ent{
int twd;
int lst;
int blg;
}e[];
struct edge{
int f,t;
lnt val;
bool vis;
void Insert(int no)
{
scanf("%d%d",&f,&t);
ade(f,t,no);
ade(t,f,no);
}
}ede[];
lnt b[];
int n,m;
int cnt;
int Q;
int lstans;
void ade(int f,int t,int no)
{
cnt++;
e[cnt].twd=t;
e[cnt].blg=no;
e[cnt].lst=p[f].hd;
p[f].hd=cnt;
return ;
}
void B_(int x,int f)
{
p[x].fa=f;
for(int i=p[x].hd;i;i=e[i].lst)
{
int to=e[i].twd;
if(p[to].fa)continue;
ede[e[i].blg].vis=true;
B_(to,x);
}
return ;
}
void C_(int x,int f)
{
for(int i=p[x].hd;i;i=e[i].lst)
{
int to=e[i].twd;
if(p[to].fa==x);else continue;
C_(to,x);
ede[e[i].blg].val^=p[to].val;
p[x].val^=p[to].val;
}
return ;
}
bool Insert(lnt x)
{
for(int i=;i>=;i--)
{
if(x&(1ll<<i))
{
if(b[i]==)
{
b[i]=x;
return true;
}else x^=b[i];
}
}
if(!x)return false;
return true;
}
int main()
{
// freopen("a.in","r",stdin);
srand(time(NULL));
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)ede[i].Insert(i);
B_(,);
for(int i=;i<=m;i++)
{
if(ede[i].vis)continue;
ede[i].val=rand()+;
p[ede[i].f].val^=ede[i].val;
p[ede[i].t].val^=ede[i].val;
}
C_(,);
scanf("%d",&Q);
while(Q--)
{
int k;bool flag=false;
scanf("%d",&k);
memset(b,,sizeof(b));
for(int i=;i<=k;i++)
{
int x;
scanf("%d",&x);x^=lstans;
if(!Insert(ede[x].val))flag=true;
}
if(flag)
{
puts("Disconnected");
}else{
puts("Connected");
lstans++;
}
}
return ;
}
BZOJ3569: DZY Loves Chinese II(线性基构造)的更多相关文章
- BZOJ3569:DZY Loves Chinese II(线性基)
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图, ...
- 【BZOJ3563/3569】DZY Loves Chinese II 线性基神题
[BZOJ3563/3569]DZY Loves Chinese II Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以 ...
- BZOJ 3569: DZY Loves Chinese II(线性基)
传送门 解题思路 首先构造出一个生成树,考虑不连接的情况.假设连通两点的非树边和树边都断掉后不连通,那么可以给所有的非树边随机一个互不相同的值,然后树边的权值为过他两端点的非树边权值的异或和,这个可以 ...
- BZOJ 3569 DZY Loves Chinese II ——线性基
[题目分析] 腊鸡题目卡题面. 大概的意思就是给一张无向图,每次删掉其中一些边,问是否联通. 首先想到的是Bitset,可以做到n^2/64.显然过不了. 然而这是lyd在给我们讲线性基的时候的一道题 ...
- [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 & 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
这回是真·强制在线了,首先这道题就是AHOI2013连通图的加强版,那道题k最大只有4 那道题的做法是: 取一个生成树,对每条非树边取一个随机权值, 对每条树边设为“覆盖它的所有非树边”的权值的xor ...
随机推荐
- 10个关于Android开发的实用教程
本文为致力于Android应用的开发人员精选了几个不错的实用教程,无论是初学者还是专业开发人员都应该能够从中获益.这些教程中有不少是关于绘图和地址服务运用的,另外一些则是SDK相关的.希望对大家有所帮 ...
- RabbitMQserver配置文件
RabbitMQ的server配置设置.我做了改动,改动例如以下: {tcp_listeners, [5672]}, {loopback_users, ["elite"]} 其他的 ...
- 上传canvas图片到服务器
canvas绘图后用 canvasDom.toDataURL()可以得到png格式图片的base64 dataURI 然后用ajax post给后台 ,后端程序把开头的data:image/png; ...
- windows tensorflow 版本与升级
tensorflow 的版本在 1.1.0/1.2.0 之后 api 迎来重大变化,有必要将版本升级到最新的 1.1.0 以上. 1. 使用 upgrade CPU:pip3 install –upg ...
- Linux安装PHP和MySQL
Linux上安装php运行环境稍微比Windows复杂,没有Windows那么方便的集成环境.技术在于折腾嘛 Linux 版本的可以参考之前发布的Linux安装PHP MongoDB扩展 安装环境 系 ...
- sql 知识点
1 聚集索引和非聚集索引的区别 聚集索引是指 表中存储的数据按照索引的顺序来存储,数据检索效率高,但是对数据更新影响较大:非聚集索引是数据存储在一个地方,索引存储在另一个地方:索引带有指针,指向数据的 ...
- Oracle 流程控制语句
分为选择语句循环语句两大类:一 选择语句1 if then ...end;set serveroutput on declare var_name1 varchar2(50):='East'; var ...
- c# 对用户密码加密解密
一.使用16位.32位.64位MD5方法对用户名加密 1)16位的MD5加密 ? 1 2 3 4 5 6 7 8 9 10 11 12 /// <summary> /// 16位MD5加密 ...
- Java调用Python遇到的一系列问题与解决方案
首先,百度了几个方法 1.用jython里的一个jar包,jython.jar,里面封装了一个专门调用Python的类, 但是不知道为什么我用Java一调用就报错,因此放弃. 2.用runtime ...
- Ambari Confirm Hosts Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).解决 Permanently added 'hdp21,192. ...