Description

  计算给定范围内有多少种输入可以使输出为1。 我们假设3 < n < 100, 3 < m < 3000,而且网络中的门是用1到m之间的数任意编号的。

Input

文件第一行包含三个整数,分别表示输入的个数,门的个数,连接到输出的门的编号。以下的m行描述网络中的连接情况。第I行表示第I个门的两个输入,两个输入为范围[-n,m]之间的一个整数。如果输入是网络的第k个输入,则连接的描述是一个整数-k,如果输入是第j个门,则连接的描述是一个整数j。以下两行各有一个n位二进制串,表示输入的上限和下限。

Output

包含一个整数,表示给定范围内有多少种输入可以使输出为1。
由异或的性质,拓扑排序并处理出最终输出等于哪些输入异或起来,于是转成区间内有几个二进制数和指定数的按位与有奇数个1,可以数位dp
#include<cstdio>
#include<bitset>
typedef unsigned long long u64;
int n,m,o;
int es[],enx[],e0[],deg[],q[],ql=,qr=,ep=;
std::bitset<>st[];
int S[];
char l[],r[];
void ae(int a,int b){
es[ep]=b;enx[ep]=e0[a];e0[a]=ep++;
++deg[b];
}
struct num{
u64 a,b;
num(u64 _a,u64 _b):a(_a),b(_b){};
num(u64 _a=):a(),b(_a){}
void print(){
int ss[],sp=;
u64 v1=a>>,v2=a&0xffffffffll;
u64 v3=b>>,v4=b&0xffffffffll;
while(v1|v2|v3|v4){
v2+=v1%<<;v1/=;
v3+=v2%<<;v2/=;
v4+=v3%<<;v3/=;
ss[sp++]=v4%;v4/=;
}
if(!sp)putchar('');
while(sp)putchar(''+ss[--sp]);
}
};
num operator+(num x,num y){
u64 c=x.b+y.b;
return num(x.a+y.a+(c<x.b),x.b+y.b);
}
num operator-(num x,num y){
return num(x.a-y.a-(x.b<y.b),x.b-y.b);
}
num f[][][];
void pre(){
f[n+][][]=;
for(int i=n;i;--i){
f[i][][]=f[i][][S[i]]=f[i+][][]+f[i+][][];
f[i][][]=f[i][][S[i]^]=f[i+][][]+f[i+][][];
}
}
num cal(char*s,bool e){
for(int i=;i<=n;++i)s[i]-='';
int d=;
num ans=;
for(int i=;i<=n;++i){
if(s[i])ans=ans+f[i][][d^];
if(S[i])d^=s[i];
}
if(e){
int d=;
for(int i=;i<=n;++i)if(S[i])d^=s[i];
ans=ans+d;
}
return ans;
}
int main(){
scanf("%d%d%d",&n,&m,&o);
for(int i=,a,b;i<=m;++i){
scanf("%d%d",&a,&b);
if(a<)st[i].flip(-a);
else ae(a,i);
if(b<)st[i].flip(-b);
else ae(b,i);
}
for(int i=;i<=m;++i)if(!deg[i])q[++qr]=i;
while(ql!=qr){
int w=q[++ql];
for(int i=e0[w];i;i=enx[i]){
int u=es[i];
st[u]^=st[w];
if(!--deg[u])q[++qr]=u;
}
}
for(int i=;i<=n;++i)S[i]=st[o][i];
scanf("%s%s",l+,r+);
pre();
(cal(r,)-cal(l,)).print();
return ;
}

bzoj1553: XOR网络的更多相关文章

  1. 机器学习&数据挖掘笔记_20(PGM练习四:图模型的精确推理)

    前言: 这次实验完成的是图模型的精确推理.exact inference分为2种,求边缘概率和求MAP,分别对应sum-product和max-sum算法.这次实验涉及到的知识点很多,不仅需要熟悉图模 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 xor (根号分治)

    xor There is a tree with nn nodes. For each node, there is an integer value a_ia​i​​, (1 \le a_i \le ...

  4. 2017 ICPC网络赛(西安)--- Xor

    题目连接 Problem There is a tree with n nodes. For each node, there is an integer value ai, (1≤ai​≤1,000 ...

  5. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 G. Xor

    There is a tree with nn nodes. For each node, there is an integer value a_ia​i​​, (1 \le a_i \le 1,0 ...

  6. 2019长安大学ACM校赛网络同步赛 L XOR (规律,数位DP)

    链接:https://ac.nowcoder.com/acm/contest/897/L 来源:牛客网 XOR 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  7. 2019 ICPC南昌邀请赛 网络赛 K. MORE XOR

    说明 \(\oplus x​\)为累异或 $ x^{\oplus(a)}​$为异或幂 题意&解法 题库链接 $ f(l,r)=\oplus_{i=l}^{r} a[i]$ $ g(l,r)=\ ...

  8. 【分块】计蒜客17120 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 G. Xor

    题意:给一棵树,每个点有权值.q次询问a,b,k,问你从a点到b点,每次跳距离k,权值的异或和? 预处理每个点往其根节点的路径上隔1~sqrt(n)的距离的异或和,然后把询问拆成a->lca(a ...

  9. Linux网络驱动--snull

    snull是<Linux Device Drivers>中的一个网络驱动的例子.这里引用这个例子学习Linux网络驱动. 因为snull的源码,网上已经更新到适合最新内核,而我自己用的还是 ...

随机推荐

  1. Java数组和C++异同

    一.定义和初始化 1.Jave定义和初始化: Java:两种方式 Type[]  A; Type A[]; 定义时不能指定数组的长度 静态初始化:   A = new Type[][Ele1,Ele2 ...

  2. Bzoj索引

    1001 : http://ideone.com/4omPYJ1002 : http://ideone.com/BZr9KF1003 : http://ideone.com/48NJNh1004 : ...

  3. app的自动更新(调用DownloadManager)

    具体思路为:调用接口与服务器版本对比,当服务器版本号大于本地的,调用DownloadManager进行下载,之前也试过很多方法,但是兼容性都不是很好,还有一点要注意的是,在这里我并没有设置固定的下载路 ...

  4. NSOperationQueue的其他方法

    1.设置最大并发数 什么是并发数 同时执行的任务数 比如,同时开3个线程执行3个任务,并发数就是3   最大并发数的相关方法 - (NSInteger)maxConcurrentOperationCo ...

  5. 炫酷的Linux终端命令大全-1

    1. 命令行日常快捷键. CTRL + U            ------------------------------- 剪切光标前的内容 CTRL + K             ----- ...

  6. PHP与Golang如何通信?

    PHP与Golang如何通信? 最近遇到的一个场景:php项目中需要使用一个第三方的功能(结巴分词),而github上面恰好有一个用Golang写好的类库.那么问题就来了,要如何实现不同语言之间的通信 ...

  7. <转>Win7系统下利用U盘安装Ubuntu_12.04实现双系统教程

    目前网上流传的关于Linux 系统的安装教程可是说是五彩缤纷,之前想采用硬盘安装方式,由于配置问题未能正确安装,现研究了下U盘安装,根据互联网上的一些资料及自己的总结,在Windows7 系统下采用U ...

  8. NOPI导出加载模板

    ListExcel导出(加载模板) /// <summary> /// List根据模板导出ExcelMemoryStream /// </summary> /// <p ...

  9. tcp传送xml

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.i ...

  10. 使用qmake构建程序(有关.pro和.vcproj编译选项对应关系)

    houjinxin 为了方便统一构建,准备使用qmake构建所有的vc工程,无论是否使用了Qt库,可是在网上找了几天,有几个选项根本就不知道怎么在pro里面配置,才能生成预期的vcproj文件... ...