04 2013 档案

摘要:题意:这题和POJ-3177-Redundant Paths差不多..只是这题是一开始是无向图,要求你加几条有向边形成强连通图.即和无向图加几条无向边形成双连通分量是一个意思!分析:先求双连通分量,然后缩点,形成新图,然后统计点的度数,由于原图可能是不连通的,故可能有孤立的点,即度数为0.然后统计度数,度数为1的ans加1,度数为0的ans加2,最后(ans+1)/2即是答案.然后注意,若一开始整个图就是一个双连通,则答案为0// File Name: 10972.cpp// Author: Zlbing// Created Time: 2013/4/30 9:20:22#include< 阅读全文
posted @ 2013-04-30 10:40 z.arbitrary 阅读(580) 评论(0) 推荐(0)
摘要:题意:有N个方案M个投票人,每个投票人最多能投4个方案,问满足每个投票人超过一半的建议被采用的方案.若不存在输出"impossible"分析:对于投票人,若提出的方案少于3个,则需要全部满足才能满足题意,若大于等于三个则最多只能有一个方案不被满足答案输出对于每个方案采纳和不采纳都Twosat一遍,若都满足输出"?",若都不满足则没有方案满足题意,输出"impossible",若只能采纳输出"y",不能采纳输出"n";// File Name: 1086.cpp// Author: Zlbing/ 阅读全文
posted @ 2013-04-29 16:41 z.arbitrary 阅读(396) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/wsniyufang/article/details/6609872题意:判断给定的有向图是否满足 1.强连通 2 每一条边属于且仅属于一个环分析:tarjan算法的运用,用fa[]数组记录tarjand的搜索路径,当有一个点有横向边(指向它的祖先节点——表示有环),据fa记录的路径标记 除被指向的祖先外所有路径上的点,当有某个点被记录2次时,必然存在一条边属于两个环。我的程序有点错误,在UVA10510-Cactus老是RE...不知道为啥..然后改了下输入到hdu上就过了...难道是hdu的数据太弱了?唉..我好菜(顶点改成从0开始就好了!)//U 阅读全文
posted @ 2013-04-28 18:05 z.arbitrary 阅读(493) 评论(0) 推荐(0)
摘要:题意比较复杂就不多说了...分析:只是拆点即可,对于@说不能同时有两个人站在上面,可以直接忽略即可,因为这个是不沉没的,故一个一个通过即可.// File Name: 11380.cpp// Author: Zlbing// Created Time: 2013/4/26 15:12:42#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set>#include<map># 阅读全文
posted @ 2013-04-26 16:45 z.arbitrary 阅读(499) 评论(0) 推荐(0)
摘要:题意:N个点(1<=N<=100)M(1<=M<=5000)条有向边,运送K(1<=K<=100)个单位商品,每条边都有一个系数ai(0<ai<=100)和容量ci(ci<=5),若运送x个单位的话,就得交ai*x^2美元.问你,将K个单位商品从1运到N,最小花费.若运送不到,输出-1;分析:因为容量Ci比较小,故可以拆边,把容量为Ci的边拆成Ci条边,每条边的花费为xi*xi*ai-(xi-1)(xi-1)*ai;详细见代码// File Name: 1486.cpp// Author: Zlbing// Created Time: 20 阅读全文
posted @ 2013-04-26 14:48 z.arbitrary 阅读(229) 评论(0) 推荐(0)
摘要:题意:一个公司有两个音乐厅,求能一年中能获得的最大的收益.分析:最小费用最大流,将费用改成负数求即可// File Name: 1317.cpp// Author: Zlbing// Created Time: 2013/4/25 21:32:14#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set>#include<map>#include<vector> 阅读全文
posted @ 2013-04-25 23:22 z.arbitrary 阅读(307) 评论(0) 推荐(0)
摘要:题解来源:https://webcache.googleusercontent.com/search?q=cache:tXXwdVkVWOEJ:acmrush.appspot.com/2012/01/4/hangzhou2005D.html+&cd=2&hl=zh-CN&ct=clnk&gl=cn题目大意:两个公司进行投标,竞争一些channels,每个投标可以包含多个channels,且都有一定的收益,每一个channels只能为其中的一个公司利用,同时保证一个公司给出的投标中选中的channels不会冲突,求出两公司收益总和的最大值。最多有300000个ch 阅读全文
posted @ 2013-04-25 11:10 z.arbitrary 阅读(458) 评论(0) 推荐(0)
摘要:题意:有N个点,每个点有ni个企鹅,这个点最多能跳着离开mi次.企鹅每次最多能跳D单位远,每两点之间有坐标距离..要你求出哪些点可以聚集所有的企鹅分析:因为每个点最多离开mi次,说明这个点有结点容量(允许通过的最大容量),故拆点i*2,i*2+1;详细见代码// File Name: 12125.cpp// Author: Zlbing// Created Time: 2013/4/23 20:42:02#include#include#include#include#include#include#include#include#include#include#include#include 阅读全文
posted @ 2013-04-23 23:58 z.arbitrary 阅读(472) 评论(0) 推荐(0)
摘要:题意:N个队伍在M张桌子上吃饭,问你,是否存在一种方案,使得队伍中每个人都在不同的桌子上吃饭,若不能输出0,若能,输出1并输出解决方案分析:最大流问题,只是这个需要输出解决方案.先建图,每个队伍Ai与每个桌子Bi建一条边,权值为1,因为每个队伍只能派一个人在这张桌子上吃饭.同时建立超级源点S和超级汇点T,S向每个队伍建一条边,权值为队伍人数.每张桌子向T建一条边,权值为桌子容量!求最大流ans,若ans等于所有人数,则有解决方案,否则无解决方案;对与解决方案,对与每条边,起始点要求是队伍标号,终点是桌子标号,且流量flow要与容量cap相等,说明这条边被选择了!// File Name: 10 阅读全文
posted @ 2013-04-22 17:05 z.arbitrary 阅读(368) 评论(0) 推荐(0)
摘要:题意:有n(n ≤ 1000)个人和m(m≤500)个组。一个人可能属于很多组。现在请你从某些组中去掉几个人,使得每个人只属于一个组,并使得人数最多的组中人员数目最小。分析:看到最多的最小,就可以猜到是一个二分答案ans的题,最大流是没想到...囧.这题用最大流做,若Ai属于Bi,则连一条Ai到Bi的边,边值为1,然后连超级源点S到Ai的边,边值为1,表示仅有一个Ai,然后对于超级源点T,连Bi到T的边,边值为ans,表示Bi组织最多有ans个人,求最大流,若最大流答案等于n,则表示在每组人限制ans个的情况下能够分配组员到各组,若不等于,则说明在每组人限制ans个的情况下,不能分配组员到各组 阅读全文
posted @ 2013-04-22 15:01 z.arbitrary 阅读(330) 评论(0) 推荐(0)
摘要:题意:有n个景点,每个景点之间有一些带权有向边,要求你设计一些线路,要求线路是一个圈,并且每个景点只能有一条线路经过,并且只能经过一次(起始点除外),问你,若存在,求这些线路权值的最小和,否则输出"N"分析:这题和上一题HDU差不多,只是这题有可能不存在解决方案.同样这题也有重边若不存在解决方案,则对于有些点,不存在Left[i]和i的边,故w[Left[i]][i]=-INF;http://www.cnblogs.com/arbitrary/archive/2013/04/21/3034424.html// File Name: 1349.cpp// Author: Zl 阅读全文
posted @ 2013-04-21 21:37 z.arbitrary 阅读(435) 评论(0) 推荐(0)
摘要:题意:有N个城市,M条街道,每条街道是单向的,现在要你设计多条路线覆盖所有的点,每条路线都是一个环,并且每个点仅能被一条路线覆盖且只经过一次(终始点除外)分析:因为是有向圈,所以每个点的入度和出度应该都是1,故将一个点拆成两个点,入度点和出度点,然后用最佳匹配即可!(因为最佳匹配是求最大值,故我们把边权设为负值即可!)注意:这题有重边,题目太不道德了,有重边都不说,还要猜的啊!有些题没说有重边就没重边,有些题没说有重边但是它就是有重边!无敌了都!// File Name: 3488.cpp// Author: Zlbing// Created Time: 2013/4/21 20:14:19# 阅读全文
posted @ 2013-04-21 20:44 z.arbitrary 阅读(1012) 评论(0) 推荐(0)
摘要:题意:有c只猫,d只狗比赛,V个投票人,每个人可以投喜欢和讨厌两票,如果有讨厌的猫或狗在台上,则投票人拒绝去看比赛,如何安排猫和狗使观看的人最多,求观众的最多人数.分析:因为观众不是喜欢猫就是喜欢狗,故可以将喜欢猫的观众放一起,喜欢狗的观众放一起,因此形成二分图,把不能同时存在的两个观众连一条边,故求出的最大独立集就是答案.// File Name: 12168.cpp// Author: Zlbing// Created Time: 2013/4/21 17:00:35#include<iostream>#include<string>#include<algo 阅读全文
posted @ 2013-04-21 19:25 z.arbitrary 阅读(320) 评论(0) 推荐(0)
摘要:题意:在一个n*n的棋盘上有n个棋子,要求通过移动棋子使棋子的排布满足以下情况之一:呈横行排列;呈纵行排列;呈对角线排列(有两条)。棋子移动一个单元格的费用为1,总费用为所有棋子的移动费用之和。求最小费用。分析:因为这题的数据很小,故可以枚举每种情况.对于每种情况,我们可以用二分匹配的方法算出最小费用(对于每个棋子,连接n条边到n个目标位置,权值设为负,这样最佳二分匹配求的最大值就是答案的最小值了);// File Name: 1045.cpp// Author: Zlbing// Created Time: 2013/4/20 15:58:22#include<iostream> 阅读全文
posted @ 2013-04-21 13:48 z.arbitrary 阅读(356) 评论(0) 推荐(0)
摘要:题意:求生成树,并且生成树的最大边减最小边的值最小.分析:根据最小瓶颈生成树可知,使用kruscal算法枚举最小边即可// File Name: 1395.cpp// Author: Zlbing// Created Time: 2013/4/20 13:00:15#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set>#include<map>#include<v 阅读全文
posted @ 2013-04-20 13:37 z.arbitrary 阅读(463) 评论(0) 推荐(0)
摘要:题意:给出一个无向图,求出图中每个环中最大的边,并按顺序输出,若没有,输出forest;分析:根据kruscal的性质可知,当A点的祖先等于B点的祖先时,说明AB两点构成一个环,并且AB之间的边最大.// File Name: 11747.cpp// Author: Zlbing// Created Time: 2013/4/19 22:44:46#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include& 阅读全文
posted @ 2013-04-19 23:17 z.arbitrary 阅读(384) 评论(0) 推荐(0)
摘要:简单题,因为是生成树,所以A到B只有唯一路径,故只要dfs,找A到B的唯一的那条路// File Name: 10938.cpp// Author: Zlbing// Created Time: 2013/4/19 14:57:26#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set>#include<map>#include<vector>#include 阅读全文
posted @ 2013-04-19 15:39 z.arbitrary 阅读(489) 评论(0) 推荐(0)
摘要:题意:有N个点,E条边,起点S,终点T,每条边都有一个距离值D,和温度值R,问你从S到T的最大温度值最小的情况下距离最短.分析:二分温度值,然后dijkstra求S到T的最短距离// File Name: 10816.cpp// Author: zlbing// Created Time: 2013/2/18 0:27:01#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set>#i 阅读全文
posted @ 2013-04-19 14:15 z.arbitrary 阅读(423) 评论(0) 推荐(0)
摘要:题意:图中有C个点,R条边,每个点有个权值,每条边也有距离值,求A到B点的最短距离+经过的点的最大值的和最小分析:比如说我们要求出S,T的“最短路”,我们可以枚举最大中间节点,因为这条路必经经过一个最大中间节点.比如说我们找到点U的时候,就假设U是S到T路径上点权最大的点,可以把图上点权大于U的点去掉然后d[ U,S ] + d[ U, T ] + w[U]便是假设u点权最大时候的“最短路”,每给出一个询问,查询即可。// File Name: 10246.cpp// Author: Zlbing// Created Time: 2013/4/18 17:37:24#include<io 阅读全文
posted @ 2013-04-18 19:27 z.arbitrary 阅读(339) 评论(0) 推荐(0)
摘要:比较两个文件或两个文件集并显示它们之间的不同FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn][drive1:][path1]filename1 [drive2:][path2]filename2FC /B [drive1:][path1]filename1 [drive2:][path2]filename2/A 只显示每个不同处的第一行和最后一行。/B 执行二进制比较。/C 不分大小写。/L 将文件作为 ASCII 文字比较。/LBn 将连续不匹配的最大值设为指定的行数。/N 在 ASCII 比较上显示行数。/O 阅读全文
posted @ 2013-04-18 18:29 z.arbitrary 阅读(4870) 评论(0) 推荐(0)
摘要:这几题dijkstra写的比较顺手啊!题意:某人要旅行,他把地图上N个城市按照从近到远给出,他要从1飞到N,但是又因为直接飞费用会很昂贵,故他想通过一个程序在换航班不超过K次的情况下所花费用最小!分析:因为题目给出的城市名,不利于我们构图,故,通过map映射将他们标号即可.这题还是一样,将每个点的状态都标识出来,V[u][k]表示飞到u点换了k次航班,然后用dijkstra计算最短路即可.注意:这题有重边,故不能用邻接矩阵,要使用邻接表!// File Name: 11280.cpp// Author: Zlbing// Created Time: 2013/4/18 11:31:29#inc 阅读全文
posted @ 2013-04-18 12:14 z.arbitrary 阅读(361) 评论(0) 推荐(0)
摘要:这题好像去年暑假的时候写过...不过好像没写出来,囧!这次再看的时候就有了些思路,把每个点的状态都标记下就好了,如V[u][f]表示在u点加了f升油.(注意:不要一开始就每个点的状态算出来,而是一单位一单位的加油,这样会节约大量时间!)题意:开车去旅游,有N个城市,M条路,每个城市的油价不一样,最开始你的车是没有油的,油箱容量是C,1单位油可以走1单位距离.有q个问题,问你从a到b,油箱容量是c,所花最小钱是多少?// File Name: 11367.cpp// Author: Zlbing// Created Time: 2013/4/18 10:30:28#include<iost 阅读全文
posted @ 2013-04-18 11:19 z.arbitrary 阅读(575) 评论(0) 推荐(0)
摘要:题意:再次成功营救出桃子公主之后,马里奥需要从Bowser魔王的城堡返回他的家。马里奥世界里一共有A个村庄和B个城堡(1<=A,B<=50),其中村庄编号为1到A,城堡编号为A+1到A+B。马里奥住在村庄1,而Bowser住在城堡A+B。马里奥能以1公里/小时的速度沿着村庄和城堡之间的双向道路行走,也可以用魔法鞋加速。魔法鞋可以让马里奥瞬间移动不超过L(L<=50)公里,但由于城堡中有很多陷阱,稍不留神就会中招,因此马里奥不使用魔法鞋穿过城堡。另外,使用魔法鞋的起点和终点都只能是城堡或者村庄,且最多只能使用K(K<=10)次魔法鞋。 你的任务是计算马里奥回家的最短时间。 阅读全文
posted @ 2013-04-17 17:18 z.arbitrary 阅读(575) 评论(0) 推荐(0)
摘要:题意:有三个没有刻度的水壶,容量分别为a,b和c(单位为升,都是<=200的正整数)。初始时前两个水壶是空的,而第三个装满了水。每次可以从一个水壶往一个水壶里倒水,直到一个水壶倒空或者另一个水壶倒满。为了让某个水壶恰好有d升水,至少要倒多少升的水?如果无解,找一个小于且最接近d的d’代替d。分析:本题最多的状态数不超过(A+1)*(B+1),故BFS所有状态即可.// File Name: 10603.cpp// Author: Zlbing// Created Time: 2013/4/16 16:52:33#include<iostream>#include<str 阅读全文
posted @ 2013-04-16 21:53 z.arbitrary 阅读(812) 评论(0) 推荐(0)
摘要:题意:给定一个n个点的连通的无向图,一个点的“鸽子值”定义为将它从图中删去后连通块的个数。求每个点的“鸽子值”。分析:对于点u,若u不是割顶,则删去后图还是连通的,所以鸽子值是1,若u是割顶,则鸽子值就是它周围相连的bcc个数.// File Name: 10765.cpp// Author: Zlbing// Created Time: 2013/4/15 13:24:10#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdi 阅读全文
posted @ 2013-04-15 17:24 z.arbitrary 阅读(759) 评论(0) 推荐(0)
摘要:很好的题解:http://www.cnblogs.com/zxndgv/archive/2011/08/06/2129333.html题意:一个国王有n个王子,同时有n个女孩。每个王子都有自己喜欢的若干个女孩,现给定一个合法的完备匹配(也就是一个王子娶其中一个自己喜欢女孩),求每个王子可以选择哪些女孩可以让剩下的每个王子依旧能够选择到自己喜欢的一个女孩。分析:草..居然是强连通图...主要事先给了一个完美匹配了,故可以用强连通图,在强连通图内王子可以娶自己喜欢的女孩...(尼玛变态,,,,给个匹配就变成别的算法了.)详解看上面的链接..// File Name: 1904.cpp// Auth 阅读全文
posted @ 2013-04-12 16:12 z.arbitrary 阅读(201) 评论(0) 推荐(0)
摘要:2-sat题// File Name: 10319.cpp// Author: Zlbing// Created Time: 2013/4/11 18:02:23#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set>#include<map>#include<vector>#include<cstring>#include<stack> 阅读全文
posted @ 2013-04-11 21:04 z.arbitrary 阅读(514) 评论(0) 推荐(0)
摘要:我草..这题是二分图...开始没看出来....草..弱爆了...还有就是图不是连通的,可能有很多图题意:放最少的士兵去监视所有的道路, 但士兵不可相邻分析:由於不可相邻可以視同為不可同色(分成两种颜色), 对于一個连通图而言, 如果可以用两种颜色涂完,那么较少使用的顏色则是放置士兵的个数。这题要小心有很多连通图 !// File Name: 11080-1.cpp// Author: Zlbing// Created Time: 2013/4/10 15:45:15#include<iostream>#include<string>#include<algorit 阅读全文
posted @ 2013-04-10 16:09 z.arbitrary 阅读(1239) 评论(0) 推荐(0)
摘要:感谢纱布龙的一路帮助…第一次发这种文章。。应该叫随写,跨度比较大o>_<o记得刚上大学时,啥都不会o>_<o。性格有点内向的我不怎么喜欢去参加各种社团和活动。。记得有次和室友去参加了一个叫明基啥的社团。。结果不幸的是一开始的面试都没通过,但是我那室友通过了囧rz。可他也卡到复试了o>_<o不知道为啥一个小小的社团也这么复杂。我面试的时候各种,我都不记得当时做了什么。。。面试的学姐问,你有过实践么,兼职过么???我记得当时的我一直都在说没有没有。。。而且头还低了下来!!!不知道为啥我会那么紧张o>_<o估计还是心虚毕竟一开始啥都不会。。其实我的性格 阅读全文
posted @ 2013-04-02 13:10 z.arbitrary 阅读(369) 评论(2) 推荐(0)