坐井观天

In the name of dream

导航

2012年4月25日

摘要: 题目链接:http://poj.org/problem?id=3678题目大意: 有一个大小为N的集合={x1,x2..xn},xi=0或1,现在给出它们之间的一些逻辑运算的结果(比如x1 and x2=1),逻辑运算有AND OR XOR三种,问是否存在一种满足所有条件的取值方案。分析: (这题开始我构图出错了,叫lin神看了下,他提出一个观点,如果类似 u,v,1 AND这样的数据,说明u,v的1必须都选,那么就把u的0连向u的1,v的0连向v的1,这样的目的是使得推出矛盾) 由于集合中的每个元素只有两种选择,要么为0,要么为1,所以可以将这个问题转化成一个2-sat判定问题。对于集... 阅读全文

posted @ 2012-04-25 15:04 一毛_ 阅读(251) 评论(0) 推荐(0) 编辑

2012年4月24日

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062题目大意: 有n对夫妻被邀请参加一个聚会,因为场地的问题,每对夫妻中只有1人可以列席。在2n 个人中,某些人之间有着很大的矛盾(当然夫妻之间是没有矛盾的),有矛盾的2个人是不会同时出现在聚会上的。有没有可能会有n 个人同时列席?分析: 03年论文中所述的典型2-SAT题,按论文中所述构图方式即可:Addedge( a1+a1+c1, a2+a2+(c2^1) ); Addedge( a2+a2+c2, a1+a1+(c1^1) );由于 c1,c2即丈夫与妻子的标记分别是0,1所以采用异或.. 阅读全文

posted @ 2012-04-24 12:01 一毛_ 阅读(297) 评论(0) 推荐(0) 编辑

2012年4月23日

摘要: 题目链接:http://poj.org/problem?id=1459题目大意: 给定一个有向图,n个点,m条边( 1<=n<=100, m<=n^2 ),点有三类: np个 power station,nc个consumer,其余的是普通的点,其中np个power station可以产生power供给网络传递,nc个consumer消耗能量,每个power station有一个最大的供应值value,每个consumer有一个最大的消耗值value,问最终可以消耗能量的最大值;分析: 我的构图方式: 虚拟一个源点S(S=0),其余输入的点都+1,虚拟一个汇点T(T=n+1) 阅读全文

posted @ 2012-04-23 20:47 一毛_ 阅读(187) 评论(0) 推荐(0) 编辑

摘要: 题目链接:http://poj.org/problem?id=1273题目大意: N个点,M条边(0<=N<=200,2<=M<=200)的有向图,源点为1,汇点为N,求最大流;分析: ……注意考虑重边,边权(容量)要进行累加;代码:poj1273 1 /*1273 Accepted 340K 0MS C++ 1582B 2012-04-22 21:16:57*/ 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <iostream> 阅读全文

posted @ 2012-04-23 20:34 一毛_ 阅读(194) 评论(0) 推荐(0) 编辑

2012年4月20日

摘要: 题目链接:http://poj.org/problem?id=3522题目大意: 给定一个简单图,n个点,m条边( 1<=n<=100,0 ≤m≤n(n− 1)/2),要求一颗生成树,使得其最大边与最小边的差值是所有生成树中最小的,输出最小的那个差值。分析: 类似于kruskal算法求最小生成树,将所有边按权值大小排升序,e1,e2,e3,...em。 枚举每条边ei,对ei,ei+1,ei+2,ei+3...进行求生成树,不断更新差值得到最优值,具体见代码,复杂度不大会算。注意: 开始我认为自己是水过的,因为我看到n是100的最大值,然后考虑到边是10000的最大值,便有了100 阅读全文

posted @ 2012-04-20 11:39 一毛_ 阅读(326) 评论(0) 推荐(0) 编辑

2012年4月19日

摘要: 题目链接:http://poj.org/problem?id=2553题目大意: 给定一个n个点的有向图( 1<=n<=5000 ),要求你输出所有满足条件的点,条件是点在 出度为0的强连通分量SCC里,点要按标号大小升序输出。 (题目我没有看懂,问了lin神后他跟我说的,我一写就ac了。)分析: Tarjan缩点,构图后dfs得到所有SCC的出度值,再遍历所有的点u,如果该点u所属的SCC——belong[u],满足out[ belong[u] ] == 0, 那么加入答案vector,最后输出。代码:poj2553 1 /*2553 Accepted 748K 79... 阅读全文

posted @ 2012-04-19 13:47 一毛_ 阅读(247) 评论(0) 推荐(0) 编辑

摘要: 题目链接:http://poj.org/problem?id=1679题目大意: 给定一个n个点,m条边的无向图,(1<=n<=100,1<=m<=10000,因为保证没有重边),问这个图的最小生成树(MST)是否唯一。分析: 我的做法是第一次先用Prim算法做一次MST得到最终的权值total,并且标记所用的边(共n-1条),然后单独分别地枚举第一次做Prim时标记的边,对于枚举到的边,在原图里删除之,做一次MST看权值和第一次的total是否相等,如果相等说明MST不唯一,直到枚举完所有标记的边后还是没有判断到不唯一那么说明是唯一的,具体见代码,我觉得我的代码还是写 阅读全文

posted @ 2012-04-19 13:40 一毛_ 阅读(292) 评论(0) 推荐(0) 编辑

2012年4月18日

摘要: 题目链接:http://poj.org/problem?id=1659题目大意: 给定n个点(n<=10),及每个点的度数,问你是否可以构图满足这样的关系;如果可以输出任意一种构图方式(以邻接矩阵的形式输出,[i][j] == 1,表示点i和点j相连,否则为0表示不相连)。分析: 贪心,开始我贪心错了,也就没怎么继续想,拿给lin神看,他直接就说是每次找个度数最大的来进行处理,然后我照他说的写还真就ac了。 另外,这个贪心是可以证明的,参见Havel定理,http://roba.yo2.cn/articles/%E5%9B%BE%E7%9A%84%E5%BA%A6%E5%BA%8F%E5 阅读全文

posted @ 2012-04-18 19:37 一毛_ 阅读(255) 评论(0) 推荐(0) 编辑

摘要: 题目链接:http://poj.org/problem?id=2186题目大意: 给定一个n,m( 1<=n<=10000, 0<=m<=50000 )代表n头牛,m个关系,然后是m行,每行一个u,v代表 牛u认为牛v是popular的, 问有多少头牛被其他所有牛认为是popular的;分析: Tarjan缩点后,dfs扫描处理出每个强连通分量(SCC)的度数即可,关键是结论。 这题的答案应该是出度 out[i] == 0 的SCC的个数必须为1。 (开始我考虑好多情况,唯一漏掉的情况在我下载USACO的数据后被我发现了;)代码:POJ 2186 1 /*2186 Ac 阅读全文

posted @ 2012-04-18 18:32 一毛_ 阅读(187) 评论(0) 推荐(0) 编辑

2012年4月17日

摘要: 题目链接:http://poj.org/problem?id=1236题目大意: 给定一个n (n<=100)个点的有向图,问: Q1、最少需要选择多少个点,使得从这些点出发能遍历完整个图; Q2、最少需要添加多少条有向边,使得整个图成为连通图;分析: 开始Q1我想复杂了,先说Q2吧,和hdu2767一样,当时我自己ac了hdu2767,可是做Q2的时候又一下没想到,便找出了原来的代码…… 先由Tarjan算法求出强连通分量后进行缩点,得到每个强连通分量的入度in[],出度out[]; Q1: 入度为0的强连通分量个数; Q2: max( 入度为0的强连通分量个数 , ... 阅读全文

posted @ 2012-04-17 12:52 一毛_ 阅读(378) 评论(0) 推荐(0) 编辑