#210. [UER #6]寻找罪犯 链接:http://uoj.ac/problem/210 想法:2-sat模型.每个人拆点,分别表示为犯人.非犯人.每个句供词拆点,分别表示真话.假话.供词与对应人的点连双向边.假如$x_i$非犯人,那么连向他的所有真供词.一个假供词意味着至少一个犯人以及这个人的其他供词为真.于是连边.优化连边就可以用前缀,后缀的方式优化. 方案的输出参见:论文 博客 复杂度$O(n+m)$,常数有点大... #include< algorithm > #include&…
首先最直观的,列一排是罪犯一排不是罪犯,对于一个条件u说v(0是1否)f罪犯,如果u不是,那么vf罪犯:如果u是,枚举他说谎的一条wg罪犯,令w(g^1)罪犯连其他条的vf 但是这样有个电度数方,会炸 考虑前缀和优化建图,在原来两排下面再接上两排表示这个人说这条以及这条之前没有/有说过谎,pr[u]表示u这个人上一次说的是哪条 然后对于一个条件连边: 这个条件是真的: add(i+2n,pr[u]+2n);这条的前一条之前都是真的 add(i+2n,v+fn);这条说的vf是真的 add(pr[…
题目描述 通过一些不可描述的方式,妹滋滋算出了 51% 的得票率,于是就她就把这个公开给了广大用户 —— UOJ 解散已成定局. 几个小时后,UOJ 创始人伏特跳蚤国王宣布辞职,即日起退出 UOJ 团队. 这两个消息在算法竞赛界引起了轩然大波,“UOJ 是什么”“废除UOJ有什么影响” 马上成为了网民们的搜索热点并出现在了各大搜索网站的首页上. 著名的大水群和三连击发源地 —— Universal OJ 用户群随之解散,导致大量 OI 水狗们无处可水.一段时间后,圈子里渐渐传出了恢复 UOJ 的…
2-sat神题.. 告诉是2-sat我也完全想不到正解. 看了看题解其实一步步分析也不算很难 这个题首先是要围绕每个人是否是犯人和每句话是否是真话来思考 首先要明确的是: 1.好人不说谎话 2.说了谎话的只能是坏人 所以我们就知道了一组对称的限制条件: 好人->之前没说过谎话 之前说过谎话->坏人 如何判断一句话是否是谎话? 这个人说的话和事实不相符,这也是一种限制条件 这时我们发现还有一个很重要的条件:哪怕是坏人,也最多只说一句谎话 所以如果当前是谎话,那这个人之前所说的所有话和之后所说的所…
题目链接 http://uoj.ac/contest/47/problem/455 题解 模拟费用流,一个非常神奇的东西. 本题即为WC2019 laofu的讲课中的Problem 8,经典的老鼠进洞模型,洞有容量和额外权值. 这道题的Subtask 4,5,6,7分别对应着老鼠进洞的最基础模型.洞有额外权值.洞有容量.洞有容量和额外权值四个变形. 让我们从最简单的开始各个击破. Subtask 4 注: 本部分配合WC2019课件里的代码图理解效果更佳. 数轴上有\(n\)只老鼠(坐标\(x_…
允许5%的相对误差,意味着我们可以只输出$\log_{1.05} V$种取值并保证答案合法.并且注意到答案随着区间长度而单增,故取值不同的答案区间是$O(\log_{1.05} V)$的. 于是初始x=0,每次x=max(x+1,x*1.05),再用单调队列$O(n)$找出当前x能更新的区间即可.总复杂度$O(n\log_{1.05}V)$ #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l);…
如果你不知道什么是sat问题,请看以下问答. Q:sat问题是什麽?A:首先你有n个布尔变量,然后你有一个关于这n个布尔变量的布尔表达式,问你,如果让你随意给这n个布尔变量赋值,这个布尔表达式能否成立.Q:k-sat是什麽意思?A:把sat问题中的布尔表达式不断进行转化,直到变为一个由与连接的若干个[由或连接的若干个(布尔变量或被非运算了的布尔变量)],那么所有的[]中()的数量的最大值为k.Q:怎么转化布尔表达式?A:按照 !(a||b) -> (!a)&&(!b) , !(a&a…
Description 小B 所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M). 小B 家住在西南角,学校在东北角.现在有T 个路口进行施工,小B 不能通过这些路口.小B 喜欢走最短的路径到达目的地,因此他每天上学时都只会向东或北行走:而小B又喜欢走不同的路径,因此他问你按照他走最短路径的规则,他可以选择的不同的上学路线有多少条.由于答案可能很大,所以小B 只需要让你求出路径数mod P 的值. \((0,0)\to (N,M)\)的路径数是\(C_{n+m}^n\…
Tarjan/2-SAT Tags:图论 作业部落 评论地址 Tarjan 用来求割边或者割点,求点双联通分量或者边双联通分量 点双联通分量:两个点之间有两条点不相交的路径 边双联通分量:两个点之间有两条边不相交的路径 Tarjan求LCA还不会 2-SAT 每种物品有选或者不选两种状态,有些限制条件形如 选了\(A\)则必须选\(B\),\(A\)和\(B\)不能同时选,必须选\(A\)等等 把逻辑限制关系变成连边 a->b表示如果\(a\)成立那么\(b\)一定成立 这个要求你理解逆否命题…
\(Tarjan\)&\(2-SAT\) 标签: 知识点总结 安利XZYXZY ps:里面的部分东西来自\(Anson\)和\(yler\)和\(XZY\) 阅读体验:https://zybuluo.com/Junlier/note/1293491 \(Tarjan\)大爷 前世没见过Tarjan这么牛逼的人 并且他还弄了好多别的东西... 留这么多东西给我们...爆炸 强连通分量&割点&割边&点双&边双 简介 在有向图G中,如果两个顶点vi,vj间(vi>v…