poj2723 2sat判断解+二分】的更多相关文章

典型的2-sat问题,题意:有m个门,每个门上俩把锁,开启其中一把即可,现在给n对钥匙(所有 钥匙编号0123456...2n-1),每对钥匙只能用一把,要求尽可能开门多(按顺序,前max个). 关键是题意的分析与转化,只能选一?必然2-sat,每给一对门上的锁对应钥匙的编号,说:必需要这 俩把钥匙的一把(至少),即:a^b,所以,建图了可以,总结通法:对应的数据编号:0123..,每个 数代表原来的一个"状态"/"命题"/"数据",使之01为一…
http://www.lydsy.com/JudgeOnline/problem.php?id=2199 题意:裸的2-SAT,但是问每个变量在所有解中是只能为真还是只能为假还是既可以为真又可以为假 这样的话求$SCC$的做法就不好做了 于是只能用$naive$做法了,枚举每个变量选择真假然后$dfs$一遍看看是否可行 点从2开始,然后就可以愉快的异或啦 #include <iostream> #include <cstdio> #include <cstring> #…
这题转化一下题意就是给一堆形如$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<…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3622 思路:二分是容易想到的,由于题目中有明显的矛盾关系,因此可以用2-sat来验证其可行性.关键是如何建图:对于每两对炸弹的(u,u')和(v,v'),如果u,vi的距离小于2*mid,则连边u->v',v->u‘.然后强连通判断可行性. http://paste.ubuntu.com/5972769/…
http://poj.org/problem?id=1064 [题目大意] 给出几条绳子的长度,问如果要切出k条长度相等的绳子,这k条绳子最常多长? [思路] 二分.把下界设为0,上界设为所有绳子长度总和,每次取mid,判断如果每条绳子长为mid切出条数是否≥k,满足则将下边界设为mid,否则把上边界设为mid.因为是要保留小数的,所以通过循环来进行精确. #include<iostream> #include<cstdio> #include<cstring> #in…
/*2-sat问题初破!题意:每一对炸弹只能选一个(明显2-sat),每个炸弹半径自定,爆炸范围不可 相交,求那个最小半径的最大值(每种策略的最小半径不同).思:最优解:必然是选择的点最近 的俩个距离/2,其他半径大小无纺,不妨设他们都为该最小半径.求最小值最大,二分答案,每次判定 R是否可行,可行就往大的搜索,注意精度r-l<10^-4才可过.该题不需要输出方案,只需判定是否矛盾的 点在同一个SCC中即可.*/ #include<iostream> //G++ 343ms,/c++,8…
题意: $n$对$couple$举行仪式,有两个时间段可以选择,问是否可以不冲突举行完,并求方案 两个时间段选择对应一真一假,对于有时间段冲突冲突的两人按照$2-SAT$的规则连边(把不冲突的时间段连起来) 然后本题需要构造解,所以要$SCC$缩点反向建图记录否定再拓扑排序$dfs$染色,好麻烦... #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #…
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1178 题意 圆桌上有n个人,每个人要求a_i种不同的礼物,相邻两个人的礼物不能重复,问有至少要准备多少种礼物 思路 如刘书 1. 明显,若n=1,直接输出a[0] 2. 若n为偶数,则可以形如ABABAB,直接取最大的两个相连之和 3. 若n为奇数,则可以转化为二分判断…
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8418    Accepted Submission(s): 3709 Problem Description There are a group of students. Some of them may know each ot…
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description There are a group of students. Some of them may know each other, while others don't. For example, A and B know each o…
题意:有N个人参加选举,有M个条件,每个条件给出:i和j竞选与否会只要满足二者中的一项即可.问有没有方案使M个条件都满足. 分析:读懂题目即可发现是2-SAT的问题.因为只要每个条件中满足2个中的一个即可,因此将人i拆成 点i表示不竞选,和点i+N表示竞选,根据合取式的满足条件建图跑Tarjan. 最后检查每个i与i+N是否在同一强连通分量中. #include<stdio.h> #include<iostream> #include<algorithm> #inclu…
当两个门锁相同时,这个钥匙必须用,不同时分开用 可以直接遍历门,当然二分更快 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #include<cstd…
Toy Storage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6534   Accepted: 3905 Description Mom and dad have a problem: their child, Reza, never puts his toys away when he is finished playing with them. They gave Reza a rectangular box…
/*1A 31ms*/ #include<stdio.h> #include<string.h> #define N 300 int n; struct node { int u,v,next; }bian[N*N*2]; int color[N],vis[N],link[N],visit[N],ma[N][N],f[N],head[N],yong; void addedge(int u,int v) { bian[yong].u=u; bian[yong].v=v; bian[y…
题意: 有n架飞机需要着陆.每架飞机有两种选择,早着陆或者晚着陆,二选其一.现在为了保证飞机的着陆安全,要求两架着陆的飞机的时间间隔的最小值达到最大. 分析: 最小值最大问题我们想到二分答案.对于猜测值x,判断是否有一种方案使相邻两着陆时间都不小于x. 如果两架飞机的某着陆时间差小于p,证明不能同时选择.根据这个条件建图,再用2-SAT判断是否有解即可. 代码如下: #include<cstdio> #include<cstdlib> #include<cstring>…
Bomb Game Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5647    Accepted Submission(s): 2036 Problem Description Robbie is playing an interesting computer game. The game field is an unbounded…
题目大意:有n架飞机,每架飞机有两个可选择的着陆时间,并且每架飞机都必须要选一个时间着陆.为了安全考虑,要求两架飞机的最小着陆时间差最大,找出这个最大值. 题目分析:有“最小值的最大值”这样的字眼,用二分.二分枚举这个最小时间差的最大值p,则问题变成了这样的:有n个只有两个元素的集合,每个元素代表一个时间点,现在要从这些集合中选出n个(一个集合中必须选出一个)元素构成新的集合,使得新集合中任意两点之间的差值都不小于p,找到满足条件的最大的p. 如果两个不同集合中的两个元素(一个集合中一个)之间的…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3715 思路:二分深度,2-sat判断可行性,根据矛盾关系建图:设a=0,a'=1,b=0,b'=1;如果c[i]==0,则a,b矛盾,连边a->b',b->a';如果c[i]==1,则a,b'矛盾,连边a->b,b’->a',a',b矛盾,连边a'->b',b->a;如果c[i]==2,则连边a'->b,b'->a,然后就是强连通判断即可. http://pas…
好久没有2-sat了,此题当复习之用,二分求最大值+2-sat判断可行,此题主要跪于题意:The results should be rounded to three decimal places. You should promise that there is still no overlap for any two balloons after rounded. rounded是四舍五入的意思,按要求,3位之后要全部舍去,知道:printf(),自动四舍五入.所有-0.0005 之后四舍五…
枚举从大到小s1,二分s2(越大越有可能符合),2-SAT判断,ans取min 思路倒是挺简单的,就是二分的时候出了比较诡异的问题,只能二分s2的值,不能在数组上二分... 有个优化,就是当不是二分图的时候退出枚举,这个用并查集染色维护 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int N=405;…
题意:       给n个点,每个点必须在一个正方形上,可以在正方向上面边的中点或者是下面边的中点,正方形是和x,y轴平行的,而且所有的点的正方形的边长一样,并且正方形不能相互重叠(边相邻可以),问满足这个要求的正方形的最大边长是多少? 思路:       点的个数最少是3,所以不存在无穷大的情况,每个点的正方形有两种选择,所以是两种中选一种,每两个点中可能存在某种选择和某种选择冲突的情况,那么好办了,是不是就是夫妻参加晚会只能去一个但是一些人之间有矛盾不能同时去的变形?直接就是2-sat,至于…
题目 Ratish is a young man who always dreams of being a hero. One day his friend Luffy was caught by Pirate Arlong. Ratish set off at once to Arlong's island. When he got there, he found the secret place where his friend was kept, but he could not go s…
二分+2-Sat 判断是否可行 输出字典序最小的解 输出字典序可行解 其实这些都是小问题,最重要的是建图,请看论文. 特殊的建边方式,如果a b是一对,a必须选,那么就是b->a建边. HDU 3062 Party 模板题 #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> #include <algorithm> using namespa…
学习笔记 - 2sat 决定重新启用Markdown--只是因为它支持MathJax数学公式 noip考完,既轻松又无奈,回来慢慢填坑 这篇博客也是拖了好久,通过kuangbin的博客才弄懂2-sat的 2-sat问题 先说sat问题--指一种每个变量只有两个值(true or false),并且给出一些限制,每个限制的基本形式为: \(a\ XOR/OR/AND\ b\ XOR/OR/AND\ c\ (etc.) = true\) 另外当每个限制涉及的变量只有两个时,这类问题称为2-sat问题…
SVM入门(一)至(三)Refresh 按:之前的文章重新汇编一下,修改了一些错误和不当的说法,一起复习,然后继续SVM之旅. (一)SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]. 支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本…
题目大概是给n个数组成的串,求是否有多个“相似”且不重叠的子串的长度大于等于5,两个子串相似当且仅当长度相等且每一位的数字差都相等. 这题是传说中楼教主男人八题之一,虽然已经是用后缀数组解决不可重叠最长重复子串的经典题了..但其实没那么简单,题目数据不强,网上一些代码都是不正确的. 首先把问题转化成重复子串的问题:把原串每一位都与前一位相减.这样得出的新串如果有两个长度为n的子串相同,那么它们对应在原串的长度n+1的子串也就相似. 所以接下来要求的就是这个新串不可“重叠”最长重复子串——问题就在…
Preface 说实话2-SAT的题目我都没怎么做过,所以这里讲的都是些超入门什么的 还有一些板子题,由于是暑假的时候学的所以有些我也记不清了 主要学习参考自:Mancher的课件&&dalao's blog&&Another dalao What is 2_SAT? SAT是适定性(Satisfiability)问题的简称 .一般形式为k-适定性问题,简称 k-SAT. 可以证明,当\(k>2\)时,k-SAT是NP完全的.因此一般讨论的是\(k=2\)的情况,即2…
Map Labeler Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1267   Accepted: 409 Description Map generation is a difficult task in cartography. A vital part of such task is automatic labeling of the cities in a map; where for each city t…
emmm...去吃早饭了... rujia讲的很好.. 最小值最大化问题,,,二分枚举答案   设x1.x2为同一个集合中的元素,y1.y2为另一个集合中的元素,如果x1与y1之差小于mid,那么如果选了x1就必须选y2,反过来,选了y1就必须选x2.这样就是2-SAT模型了.只需找出使得这个2-SAT有解的最大mid即可. #include <iostream> #include <cstdio> #include <sstream> #include <cst…
[NOI2017]游戏(搜索,2-sat) 题面 BZOJ的SPJ是假的 兹磁洛谷 题解 如果没有\(x\)地图的影响 这就是一个裸的\(2-sat\)问题 但是现在有不超过\(8\)个\(x\)地图的影响 我们不难想到枚举\(x\)地图的状态再来\(2-sat\)判断剩余是否可行. 这样的复杂度是\(O(3^dn)\),稍微算一下发现这个复杂度有点假 考虑如何优化,我们枚举\(x\)地图不连什么 表面上看起来还是\(O(3^dn)\) 但是,当他等价于\(a,b\)两种地图时,\(2^d\)种…