博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ3569 DZY Loves Chinese II(随机化+树上差分+线性基)
阅读量:5020 次
发布时间:2019-06-12

本文共 1660 字,大约阅读时间需要 5 分钟。

  上一题的强制在线版。对图跑出一个dfs树,给非树边赋上随机权值,树边的权值为覆盖他的非树边权值的异或。这样如果某条树边和覆盖他的非树边都被割掉(即图不连通),他们的异或值就为0。每次对询问看有没有子集异或值为0即可,可以简单地用线性基搞定。

#include
#include
#include
#include
#include
#include
using namespace std;int read(){ int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') { if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f;}#define N 100010#define M 500010int n,m,k,p[N],t=1,lastans=0;bool flag[N];unsigned long long v[M],f[N],base[64];struct data{ int to,nxt;}edge[M<<1];void addedge(int x,int y){t++;edge[t].to=y,edge[t].nxt=p[x],p[x]=t;}void dfs(int k,int from){ flag[k]=1; for (int i=p[k];i;i=edge[i].nxt) if (edge[i].to!=from) { if (!flag[edge[i].to]) dfs(edge[i].to,k); else v[i>>1]=rand()+1,v[i>>1]*=rand()+1,v[i>>1]*=rand()+1,v[i>>1]*=rand()+1; }}void getvalue(int k){ flag[k]=1; for (int i=p[k];i;i=edge[i].nxt) if (!flag[edge[i].to]) { getvalue(edge[i].to); v[i>>1]=f[edge[i].to]; f[k]^=f[edge[i].to]; }}int main(){ freopen("bzoj3569.in","r",stdin); freopen("bzoj3569.out","w",stdout); n=read(),m=read(); srand(20020509*(m/n)); for (int i=1;i<=m;i++) { int x=read(),y=read(); addedge(x,y),addedge(y,x); } dfs(1,1); for (int i=2;i<=m*2+1;i++) if (i&1) f[edge[i].to]^=v[i>>1],f[edge[i^1].to]^=v[i>>1]; memset(flag,0,sizeof(flag)); getvalue(1); k=read(); for (int i=1;i<=k;i++) { int s=read(); memset(base,0,sizeof(base)); bool flag=1; for (int j=1;j<=s;j++) { int x=read()^lastans; unsigned long long w=v[x]; for (int l=63;~l;l--) if (w&(1ll<

 

转载于:https://www.cnblogs.com/Gloid/p/9382450.html

你可能感兴趣的文章
序列——列表和元组(二)
查看>>
js 关于闭包的小总结
查看>>
php
查看>>
知乎使用过程中的几个问题和改进建议
查看>>
$.extend
查看>>
html手机滑动事件
查看>>
十八、AWT绘图技术
查看>>
win2012 配置wamp的若干错误
查看>>
python操作数据库
查看>>
Vue2.0+elementUI使用echarts插件
查看>>
【转】基于R语言构建的电影评分预测模型
查看>>
win8安装配置python2.7
查看>>
编译运行第一个Java程序——通过示例学习Java编程3
查看>>
linux 命令 排查问题小技巧(博客来自:狂乱的贵公子)
查看>>
php 积分抽奖活动(大转盘)
查看>>
ZJOI 2013 K大数查询
查看>>
一种可以避免数据迁移的分库分表scale-out扩容方式
查看>>
apache的hadoop升级到CDH hadoop2.0时遇到的问题及解决
查看>>
spring-cloud-starter-hystrix(断路器)服务不通或者调用失败后的错误处理和回调
查看>>
Java原始封装常用HttpRequest
查看>>