码迷,mamicode.com
首页 >  
搜索关键字:2014-2015 acm-icpc    ( 1013个结果
HDU 4687 Boke and Tsukkomi(一般图匹配|带花树)
比赛的时候刚开始看这题还以为是二分图匹配,后来才发现根本不是,因为该题存在长度为奇数的圈 。  比如1->2,2->3,3->1 。 所以该题要用一般图匹配,即带花树算法 。 比赛时抄的模板有地方抄错了,上述样例出现了死循环 。   赛后补题的时候用map去重却得不到正确答案,不知为何,暂放 ,下面给出一种正确解法。  细节参见代码: #include #include #include #...
分类:其他好文   时间:2015-08-26 22:31:56    阅读次数:227
HDU 4268 Alice and Bob(贪心+STL)
该题一开始我用multiset写了一发,写的比较裸,TLE了 。 后来队友想到了一个比较好的方法 :将两个结构体排序之后,从大到小枚举Alice的h,对于每个h,将Bob中满足h小于当前h的牌的w加进multiset,然后用二分函数查找一下大于等于当前w的第一个数,当前迭代器的上一个指针就是小于当前w的最大w,找到就删除。那么也就是我们用了这样的贪心策略:对于Alice的每一张牌,要覆盖一张Bob...
分类:其他好文   时间:2015-08-25 21:52:14    阅读次数:134
1658 - Admiral (拆点+最小费用流)
该题中的拆点法是解决几点容量的通用方法 。  因为只有容量限制的话仍然不能满足每个结点只访问一次这个限制 ,原因很简单,大家画个图就知道了,假设从起点有两条路到同一个结点2,然后又都到末点n,虽然它们满足流量限制但是经过了同一个结点。  那么怎么解决这个问题呢? 答案是:拆点法 。 将一个结点拆成两个结点,由真结点连一条容量为1费用为0的边到假结点,这样之后当我们加边的时候,另起始结点为假结点...
分类:其他好文   时间:2015-08-21 21:29:11    阅读次数:172
HDU-1533 Going Home(二分图匹配)
最近开始做最小费用流的题目,该题是二分图完美匹配下的最小权匹配,所谓完美匹配就是说从源点流入的总流量等于从汇点流出的总流量,在这种状态下的最小费用 。  那么显然是要套用最小费用流模板,另外二分图匹配的第一步就是要划分集合,划分两个集合,集合A与源点相连,集合B与汇点相连,至于容量和权值就要依据题目而定 。 比如该题,因为每个小人恰好能对应一个房子,所以每个小人与汇点的容量为1,房子与汇点的容...
分类:其他好文   时间:2015-08-21 11:24:57    阅读次数:197
11082 - Matrix Decompressing (网络流建模|二分图匹配)
该题是一道经典的二分图匹配的题目 。现在终于有点明白什么是二分图匹配了,其实说白了就是依赖于最大流算法之上的一种解决特定问题的算法 。 所谓二分图,就是我们假定有两个集合A和B,每个集合中有若干元素(点),其中源点与A相连,汇点与B相连,并且他们的总容量决定了最终答案的上限,所以一定要维护好 。 然后由A中的点向B中的点连线,他们之间也有一定的容量制约关系(具体看题目中的边权值限制)。这样就可以求...
分类:其他好文   时间:2015-08-20 22:39:39    阅读次数:285
753 - A Plug for UNIX (最大流或二分图匹配)
紫书上网络流部分的第一道例题,  刚刚学了最大流,还没有理解二分图匹配 , 这里就只说一下我用最大流是怎么做的吧 。 我们可以假想一个源点,一个汇点,然后对于每一个设备的插头,从源点连一条线,对于每个插座,连一条线到汇点,且容量都为1 。...
分类:其他好文   时间:2015-08-20 21:00:34    阅读次数:282
HDU-4081 Qin Shi Huang's National Road System(最小生成树)
今天比赛AC的一道最小生成树的题目 , 学到了不少东西 。  最小生成树的模板很简单,最简洁好写的还是lrj紫书上的代码 。利用并查集加速算法 。 该题的不同之处在于它选择任意一条路修成“魔法”道路 , 然后其他路的权值之和还要是最小的一棵次小生成树,并且求魔法道路两端点值之和除以其他路径长之和的最大值 。 显然该题的难点在于枚举两个端点之后怎么快速的求出次小生成树权值之和 。  枚举两个端...
分类:其他好文   时间:2015-08-19 20:28:28    阅读次数:140
1001 - Say Cheese (Dijkstra算法)
该题是求两点间的最短路问题,用Dijkstra算法比较快 ,跑了0.003s 。 方法很简单,将圆看成结点,直接判断两个圆是否相交,如果相交距离为0,否则距离为圆心间距离减去两圆半径。 起点和终点也可以看成是一个半径为0的圆 。 这样就变成了两点间的最短路问题,适合用Dijkstra算法求解。  比较坑的是该题说了数据范围n最大100,但是我开了105竟然RE ,看成505就过了 。  所以在...
分类:编程语言   时间:2015-08-18 14:14:27    阅读次数:145
821 - Page Hopping (Floyd)
很裸的Floyd水题,只需要注意一点: 题目中给的结点编号并不是完整的从1~n,不过没有关系,因为我们初始化为INF,当两点间距离不等于INF时相加就可以了。 细节参见代码: #include using namespace std; const int maxn = 105; const int INF = 1000000; int a,b,n,d[maxn][maxn],kase = 0...
分类:其他好文   时间:2015-08-18 12:13:20    阅读次数:149
658 - It's not a Bug, it's a Feature! (Dijkstra算法)
今天第一次系统的学习了一下最短路算法,开始刷第十一章,第一次写Dijkstra算法,出现了很多喜闻乐见的错误。。而且uva上样例很水,瓢虫也很水 ,坑了我好久。 首先是对于结点的处理,我们必须要维护一个二元组,一个表示结点一个表示当前结点最短路。   因为Dijkstra算法利用了优先队列来加速算法,所以需要定义小于运算符,一开始我直接将状态装进了优先队列,显然是不对的,因为优先队列的作用就是取...
分类:编程语言   时间:2015-08-17 23:47:45    阅读次数:231
1013条   上一页 1 ... 74 75 76 77 78 ... 102 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!