zoj3422Go Deeper(2-sat + 二分)】的更多相关文章

题目请戳这里 题目大意: go(int dep, int n, int m) begin output the value of dep. if dep < m and x[a[dep]] + x[b[dep]] != c[dep] then go(dep + 1, n, m) end 读上面程序段,yy出函数功能.数组a,b,c长度为m,x长度为n.数组a,b中元素范围[0,n - 1],数组c元素为0或1或2.x数组元素为1或0.求能输出的最大的m. 题目分析:2-sat,还是比较裸的吧.要…
Go Deeper Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 3435    Accepted Submission(s): 1125 Problem Description Here is a procedure's pseudocode: go(int dep, int n, int m)beginoutput the valu…
题意: 有\(n\)个布尔变量\(x_i\),有一个递归函数.如果满足条件\(x[a[dep]] + x[b[dep]] \neq c[dep]\),那么就再往深递归一层. 问最多能递归多少层. 分析: 首先二分能递归的深度,然后在2-SAT中添加相应的约束条件. 约束条件是这样添加的,对于两个布尔变量\(x\)和\(y\): \(x+y \neq 0 \Rightarrow x \vee y\) \(x+y \neq 1 \Rightarrow \bar{x} \vee y, x \vee \…
这题转化一下题意就是给一堆形如$a_i + a_j \ne c\quad (a_i\in [0,1],c\in [0,2])$的限制,问从开头开始最多到哪条限制全是有解的. 那么,首先有可二分性,所以直接二分枚举最大处,然后把这些限制加边做一次2-sat就好了.连边的话注意一下细节就行,$c=0$时候就是选$0$必须另一个选$1$,$c=1$是选同类,$c=2$就是选$1$另一个必须选$0$,然后注意一下$i=j$也就是对同一变量的特殊讨论,就是直接赋值型的连边.然后就没了. #include<…
Go Deeper 题意:确定一个0/1数组(size:n)使得满足最多的条件数.条件在数组a,b,c给出. 吐槽:哎,一水提,还搞了很久!关键是抽象出题目模型(如上的一句话).以后做二sat:有哪些是点,哪些是条件,分清!,然后注意细节.这次居然因为里面一个小错误: 判断有无解的时候,i与i+1是否在一个SCC中的时候,i居然没有每次+2!而是++!傻X了...囧!还一直以为自己二分写错... #include<iostream> #include<cstdio> #includ…
G - Go Deeper Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Description Here is a procedure's pseudocode:   go(int dep, int n, int m) begin output the value of dep. if dep < m and x[a[dep]] + x[b[dep]] != c[dep] then go(dep…
HDU 3715 Go Deeper 题目链接 题意:依据题意那个函数,构造x数组.问最大能递归层数 思路:转化为2-sat问题,因为x仅仅能是0.1,c仅仅能是0,1.2那么问题就好办了,对于0, 1, 2相应各自是3种表达式,然后二分深度,搞2-sat就可以 代码: #include <cstdio> #include <cstring> #include <cstdlib> #include <vector> #include <algorith…
Go Deeper Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 21 Accepted Submission(s): 10   Problem Description Here is a procedure's pseudocode: go(int dep, int n, int m)beginoutput the value of de…
0x01 布尔代数(Boolean algebra) 大名鼎鼎鼎的stephen wolfram在2015年的时候写了一篇介绍George Boole的文章:George Boole: A 200-Year View. 怎样用数学公理重新表达经典逻辑?George Boole在19世纪的时候开始思考这件事,在他的书<The Mathematical Analysis of Logic>里面George Boole首次展示了使用符号加运算符的方式表示逻辑,例如"And"是&q…
题意: 给出n个点  让求这n个点所能建成的正方形的最大边长,要求不覆盖,且这n个点在正方形上或下边的中点位置 解析: 当然是二分,但建图就有点还行..比较难想..行吧...我太垃圾... 2 - sat建图 一看逻辑关系,二看具体情况 这里既有平常常用的逻辑关系,也有一些具体的关系 #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <…