2-SAT
LowestJN
强省弱OIer
展开
-
[BZOJ2199][Usaco2011 Jan][2-SAT]奶牛议会
分享一篇不2-set介绍博客2-set可以用来判断给出的限制能不能全满足。 那么枚举每个议案,用2-SET分别判断当这个议案通过和否决时有没有解。 在判断的时候因为已经知道的当前议案的通过情况,只用从对应的点dfs出去,标记路径上的点,最后判定有没有矛盾。#include <cstdio> #include <cstring> #include <string> #include <iostre原创 2017-02-06 13:19:52 · 700 阅读 · 0 评论 -
[BZOJ3495][PA2010][2-SAT]Riddle
明显的2-SAT模型,但是对于国家的限制,边数是O(n2)O(n^2)的。 可以考虑对有x个城市的国家新建x个结点,第i个结点表示1~i的结点中是否存在首都。那么边数就可以优化到O(n)O(n)了#include <cstdio> #include <iostream> #include <algorithm> #define N 1000010 #define M 5000100using na原创 2017-04-10 14:38:02 · 835 阅读 · 0 评论 -
[2-SAT][POJ2683][HDU1814]2-SAT两种模板
2-SAT有两种模板,一种O(M)O(M)可以求任意可行解,另一种O(MN)O(MN)十分暴力,所以可以求字典序最小或最大解POJ2683给定限制求任意可行解这题就是O(M)O(M)的模板。#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <string> #include <原创 2017-02-07 18:52:25 · 671 阅读 · 0 评论 -
[2-SAT]NOI2017 .day2 T1 游戏
一看题目 3-sat??? 然而发现为x的地图最多有8个,那么可以枚举每个x是什么,然后2-sat,复杂度是38(n+m)3^8(n+m),再想一想,其实可以枚举每个x是a,或者用A型车,再用2-sat,复杂度就是28(n+m)2^8(n+m)了,但是建图太鬼畜,程序一大半在建图,最后还是被卡成68分#include <cstdio> #include <iostream> #include <a原创 2017-07-24 12:40:41 · 686 阅读 · 0 评论 -
[二分 前缀优化建图 2-SAT] Codeforces 587D. Duff in Mafia
二分答案对于一个点,最多能删一条相连的边,每一种颜色最多能有一条相连的边,那么把每个点相连的边用前缀优化建图就可以了#include <cstdio> #include <iostream> #include <algorithm> #include <vector> #include <cstring>using namespace std;const int N=1000010;int n,m,原创 2017-10-21 14:24:44 · 544 阅读 · 0 评论 -
[Trie树优化建图 2-SAT] Codeforces Gym101190B. Binary Code
把所有串建成一棵Trie树,相当于任意一条从根到叶子的链上都至多有一个点,用类似于前缀优化建图的方法建图#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <vector>using namespace std;const int N=5000010;int n,lst,cnt,原创 2017-10-21 14:25:16 · 935 阅读 · 4 评论 -
[(可持久化)字典树 优化建图][2-SAT] LOJ#6036. && 雅礼集训 2017 Day4. 编码
老早以前的坑了 貌似好多地方都有这个题 因为每个串都只有一个问号,问号可取0可取1,这就是一个经典的2-SAT模型 但是直接做的话,边数是n2n^2级别的,不过因为是01串,可以用可持久化字典树优化建图(可能也可以不可持久化,但是我觉得可持久化比较方便)#include <cstdio> #include <iostream> #include <algorithm> #include <st原创 2017-07-13 17:05:33 · 861 阅读 · 0 评论 -
[线段树 & 前缀 优化建图 二分 2-SAT] CF Gym100159 facebook-hacker-cup-2012 I. Unfriending
二分答案对于一个点,肯定有一个区间里的点和它不能共存这个可以用线段树优化建图,每个friend list最多只能删一个,用前缀优化建图还要一些针对随机数据什么的trick才能过…比如二分中的那个特判#include <cstdio> #include <iostream> #include <algorithm> #include <vector> #include <cstring>using n原创 2017-10-21 23:20:57 · 646 阅读 · 0 评论 -
[2-SAT] Codeforces875C.National Property
发现原来我并不会输出方案…这题只要找第一个不相同的位置 pospos如果 ai,pos>ai+1,posa_{i,pos}>a_{i+1,pos} 那么 ai,posa_{i,pos} 一定是大写,ai+1,posa_{i+1,pos} 一定是小写如果 ai,pos<ai+1,posa_{i,pos}<a_{i+1,pos} 那么如果 ai,posa_{i,pos} 是大写, ai+1,posa_{原创 2017-10-17 10:33:07 · 458 阅读 · 0 评论