摘要: 题目大意:一个有向图有N个点,M条边。现在要求删掉最少的点,使得不存在从1号点到N号点的长度<=K的路径(不能直接删掉1号点或N号点)。求最少删除多少点。PS:边是有向的思路:费用流+拆点(话说dfs貌似也能过,毕竟点那么少)把每个点拆成两个点,a1和a2,中间连一条容量为1,费用为0的边(注意起点和终点的处理)对于每一条数据中的有向边a-->b,连一条a2-->b1的容量为INF,费用为1的边剩下的就是跑费用流啦~当最短路大于K停止PS:这个算法是错的,请看这组数据10 11 51 2 2 33 44 55 102 91 66 77 88 99 10图:正解应该是迭代加深搜 阅读全文
posted @ 2012-08-30 20:36 proverbs 阅读(639) 评论(0) 推荐(0) 编辑
摘要: 题意:给出n个数和m组数对应的位运算,断定n个数是否满足m组位运算很久以前就听说2-SAT了,只是最近才花时间看了一下,觉得这个东西真是神奇。对于2-SAT只能把1个点拆成2个点,对于K-SAT问题,貌似是NP问题。。我也不太清楚,反正如果你拆成2个以上的点,那就不要用2-SAT解了。前言:我只是谈一下我的体会,没有证明一定正确,但也许能启发你的思路。2-SAT主要就是处理“矛盾”与“必然”的一种方法,其算法是应用了强连通a1表示a取1,a0表示a取0,b0,b1同理对于矛盾:举例说明 如果a AND b=1,如果我们取a0,这样肯定是无解的,那我们就连一条a0-->a1的边,表示取a0 阅读全文
posted @ 2012-08-30 18:04 proverbs 阅读(257) 评论(0) 推荐(0) 编辑