摘要: 中学的 又用上了。 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 int x1,y1,x2,y2,x3,y3,x4,y4; 8 double k1,k2,k3,d1,d2; 9 double x,y;10 11 ... 阅读全文
posted @ 2014-07-24 20:13 chenjunjie1994 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 题目可以转化成是否存在这样的一条直线,穿过所有的线段。这是很容易就能想到的。然后,假如只有一个端点重合,那么我们可以知道,必定会有属于两条线段的某两个端点连出的直线可以穿过所有线段。这是枚举的思想。那么,我们该怎么判定直线与线段有交点呢?不妨通过跨立的定义来做,这是经人点醒了才想到的。在求线段是否有... 阅读全文
posted @ 2014-07-24 16:35 chenjunjie1994 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 第一道计算几何。二分一下用叉积来判。。看了DIS上说要INT64,就改INT64了。。。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int Max=5050; 7 8 struct ... 阅读全文
posted @ 2014-07-23 23:48 chenjunjie1994 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 这道题好吧,一开始便是拓扑排序的想法,搞了好久,试了多组测试数据,没错啊,可是没过。。。作孽啊,竟然忘了拓扑不能处理环,白浪费了一晚上。。。只好用动态规划了。。DP【time】【city】表示在time时刻到达city的最迟出发时间,当然,在这个时间不一定到city。转移方程挺简单,不说你也会。 1... 阅读全文
posted @ 2014-07-23 08:22 chenjunjie1994 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 二分+并查集二分枚举边权,再用并查集判连通 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 const int MAXN=110; 8 const int MAXM=10100; 9 const ... 阅读全文
posted @ 2014-07-22 20:21 chenjunjie1994 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 一次FLOYD,再枚举。注意题目要求的输出是什么哦。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int inf=9999999; 8 const int MAXN=505; 9 ... 阅读全文
posted @ 2014-07-22 17:07 chenjunjie1994 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 求的是无向图的点连通度。开始便想到网络流,既然选的是点,当然就要拆点加边了。但无论如何也不敢往枚举源汇点的方向想,因为网络流复习度很高。看看网上大牛的,都是枚举,再看数据,原来N才50个点,枚举无压力啊。看来自己以后要注意分析一下复杂度了。总结:1)无向图点连通度看来没有什么好的算法。网络流。把点i... 阅读全文
posted @ 2014-07-22 15:06 chenjunjie1994 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 很容易发现是网络流的题目,但最少边怎么求呢?初时想不到,但画图后忽然发现可以这样:求一次网络流最小割后,把满流的边置1,不满流的置INF。再求一次最大流即可。为什么呢?是否会存在一些边当前不满流,但有可能是最少边数最少割的边呢?否。因为按照DINIC的求法,每次都是增广容量最少的路,若当前不满流,则... 阅读全文
posted @ 2014-07-22 10:57 chenjunjie1994 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 无向图最小割。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int MAXN=150; 7 const int inf=10000000; 8 int vis[MAXN],combine[MAXN],wa... 阅读全文
posted @ 2014-07-21 22:06 chenjunjie1994 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 不吐槽。。 1 #include 2 #include 3 #include 4 5 //无语的水题。节哀吧。且这道题不严谨,因为没说是无环。算了,不吐槽了。优先队列+BFS 6 7 using namespace std; 8 const int inf=1000000... 阅读全文
posted @ 2014-07-21 21:48 chenjunjie1994 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 一个源点,一个汇点,明显是网络流的问题,但据说用网络流来求最小割,会超时。。囧,那出题的人是怎么想的。。。用SW的算法来求最小割。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int MAXN=310; ... 阅读全文
posted @ 2014-07-21 20:29 chenjunjie1994 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 无向图全局最小割算法求 G=(V, E)中任意 s-t 最小割的算法:定义w(A, x) = ∑w(v[i], x),v[i] A ∈定义 Ax 为在x 前加入 A 的所有点的集合(不包括 x)1. 令集合 A={a},a为 V中任意点2. 选取 V - A中的 w(A, x)最大的点 x加入集合 ... 阅读全文
posted @ 2014-07-21 17:11 chenjunjie1994 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 这道题唯一一个注意的地方是,如出现X\/Y=0这种关系时,X=0,Y=0。已经是可以肯定的关系了,所以可以连边X->-X。我也错了上面这地方。看来,还不够。以后要细心才好。 1 #include 2 #include 3 #include 4 #include 5 #include... 阅读全文
posted @ 2014-07-20 20:42 chenjunjie1994 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 还是那句话,做2SAT题时,找出矛盾点基本上可解了。这道题也是这样题意是说给出一个圆上的 n 个点(0~n-1编号),然后在指定的 m 对点之间各连一条线(可以在圆内,也可以在圆外,可以是曲线,这点真心坑爹,开始一直木有看明白),然后问你是否能使这些线都不相交当两条线在同一边会有交点时,即会有矛盾,... 阅读全文
posted @ 2014-07-20 16:45 chenjunjie1994 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 二分+2SAT的题写错了HIGH和LOW与MID的变换,TLE了好几次。。按HATE和LIKE关系先加边,再用距离的限制加边。dist(i,S1)+dist(S1,j)>limitXi->~XjXj->Xidist(i,S2)+dist(S2,j)>limit~Xi->Xj~Xj->Xidist(i... 阅读全文
posted @ 2014-07-20 12:18 chenjunjie1994 阅读(112) 评论(0) 推荐(0) 编辑