- 博客(11)
- 资源 (3)
- 收藏
- 关注
原创 【研究总结】2-sat问题
序言 最近花了一点心思研究2-sat模型,看了很多论文博客等等,也在POJ上做了一点题。其实这个东西也还挺好玩的,当然,前提是每道题你都有认真分析,认真想清楚模型的意义,搞明白为什么可以这样,而不是简单的知道怎样做,就套上一个模板了事,那样,是不是也太糟蹋这门科学了。 关于2-sat,基本上所有人都会推荐两个资料: 伍昱 由对称性解2-sat问
2013-01-20 11:23:12 28187 18
原创 【代码】POJ 3683
// 题目来源:POJ 3683// 题目大意:有n对新人要举行仪式,每对都有两个时间段可以选择,问是否可以所有新人的仪式时间不重叠// 解决方法:2-sat的一眼题,把仪式可以选择的两个时间段看成两个点,仪式时间重叠的即为矛盾关系// 特别注意:输出要按输入顺序!不要按照自己处理的顺序来。#include #define o 10000 #define _ 1000000v
2013-01-18 21:04:26 2991
原创 【代码】POJ 3678
// 题目来源:POJ 3678// 题目大意:有很多点可取值0或1,它们之间有很多边为0或1,规定每条边由端点(xor,and,or)得到,求是否可行// 解决方法:每个点的取值只有两种情况,非常符合2-sat,用强连通分量判断即可// 特别注意:可通过在拆成的点对中搭边来保证最后的结果落在某个点上#include #include #define o 1002#define _
2013-01-18 21:03:40 2040
原创 【代码】POJ 3648
// 题目来源:POJ 3648// 题目大意:有n对夫妻参加婚礼,现安排座位,已经某些人不能同时坐在新娘的对面,且夫妻不可同侧,求可行方案// 解决方法:仍然2-sat建图解决// 特别注意:新娘到新郎要连边,因为选出的必须是新郎#include #include #define o 100000#define _ 1000000using namespace std;vo
2013-01-18 21:02:57 2016
原创 【代码】POJ 3207
// 题目来源:POJ 3207// 题目大意:圆上顺序排列n个点,现要在一些点间连边,规定边只能在圆内或圆外,求有没有可能不相交// 解决方法:连边只能在里面或者外面,这就是2-sat问题,直接缩点判断即可 #include #define o 5002void link( int, int );void tarjan( int );int next[ o ], h[ o ],
2013-01-18 21:01:42 4196 1
原创 【代码】POJ 2749
// 题目来源:POJ 2749// 题目大意:有两点坐标已知,现要在坐标系上各点与两点之一建立路径,已知某些点不能建立在同一个点上,有些点必须建立在同一个点上,求最小曼哈顿距离// 解决方法:枚举最大值,然后用2-sat判断可行性#include #include #include #define o 10000#define _ 1000000#define oo 10000
2013-01-18 21:00:31 2012
原创 【代码】POJ 2723
// 题目来源:POJ 2723// 题目大意:m道门,每道门两把锁,有n对钥匙,对应2*n把锁,已知一对钥匙内取出一把另一把就会消失,求按顺序最多可开多少门// 解决方法:依然2-sat啦,只不过要带上二分答案#include #include #define o 10002#define _ 10002void link( int, int );bool check( in
2013-01-18 20:59:30 1668
原创 【研究总结】连通性问题
序言: 连通性问题,这可真是tarjan的天下啊,不过这篇文章并没有打算扯到tarjan的起源模型强连通分量,主要还是说说自己对其它连通性问题的思考,所以,如果你还不会tarjan算法的话,嗯,点这里:byvoid的tarjan算法讲解 膜拜一下神牛。 当然了,关于连通性问题这里还有:byvoid的连通性问题讲解 再次膜拜。 这篇文章是自己将三篇研究日记汇总而成的,所
2013-01-17 16:37:31 2905 1
原创 【代码】POJ 3352
// 题目来源:POJ 3352 ( CCC 2007 )// 题目大意:给定无向图G,为了满足删去任意一条边后原图任然连通,则原图至少需增加多少条边// 解决方法:求出原图的桥数量,记作sum,则(sum+1)/2即为答案#include void link( int, int );void tarjan( int, int );void dfs( int );int next
2013-01-17 16:00:52 1093
原创 【代码】POJ 2942
// 题目来源:POJ 2942 ( Central Europe 2005 )// 题目模型:给定一个无向图G,求图中哪些点不能够在任何奇圈之内(奇圈即点数为奇数的圈)// 解题方法:对图求块,然后在各个块内二分染色判断// 特别注意:求块的时候在栈中要压边不能压点#include #include using namespace std;bool map[1002][1002
2013-01-17 15:58:15 1166
原创 【代码】POJ 2762
// 题目来源:POJ 2762// 题目大意:给定一个有向图,问该图是否弱连通(若图中任意两点之间可以到达,即可以i到j或者j到i,该图即为弱连通)// 解决方法:强连通分量缩点,当且仅当该图的拓扑序列唯一的时候才成立,那么只需记录当前入度为0的个数,当多于1个时不成立#include #include #define _ 60002#define o 10002using na
2013-01-17 15:53:16 1436
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人