POJ代码
文章平均质量分 82
altair21
这个作者很懒,什么都没留下…
展开
-
POJ2253&ZOJ1942--Frogger【SPFA】单源最短路变形
链接:http://poj.org/problem?id=2253题意:一个青蛙在一块石头上,看到了另一个青蛙在另一块石头上,它想跳过去找它,如果距离太远它就需要借助别的石头当跳板,两块石头之间的青蛙距离被定义成两块石头之间所有路径中最大跳跃距离的最小值,求两个青蛙之间的青蛙距离。poj2263和它类似,链接:http://poj.org/problem?id=2263解题报告原创 2014-08-01 15:53:46 · 1580 阅读 · 1 评论 -
POJ--3104--Drying【二分】
题意:有n个衣服,告诉你每件衣服的水份,每秒减一,有一个烘干机每秒能给一个衣服减k的水份,问最少要多少时间把衣服全部晾干。二分答案,然后判断正确性,设第 i 件衣服有a[ i ]的水份,对于二分的答案mid,如果a[ i ] mid,设它自然风干时间为t1,用机器耗时t2,则有 t1 + t2 = mid 、 t1 + t2 * k >= a[ i ],联立得 t2 >= (a[原创 2014-03-16 16:55:34 · 578 阅读 · 0 评论 -
POJ--1300--Door Man【判断无向图欧拉通路】
链接:http://poj.org/problem?id=1300题意:有n个房间,每个房间有若干个门和别的房间相连,管家从m房间开始走,要回到自己的住处(0),问是否有一条路可以走遍所有的门并且没有重复的路。思路:判断是否存在欧拉通路,根据欧拉通路、欧拉回路的性质来做。有两种情况:一种是欧拉回路,所有房间的门的个数都是偶数个,并且此时初始房间不是0,此时存在要求的路径,如果初始是原创 2014-08-17 00:08:04 · 1117 阅读 · 0 评论 -
POJ--1386--Play on Words【判断有向图欧拉通路、欧拉回路】
链接:http://poj.org/problem?id=1386题意:要开启一扇门,n个单词是密码,n个单词中,如果一个单词的首字母和前一个单词的尾字母相同,并且每个单词都能这么连起来且只用一次,则门可以开启,否则不能开启,现给出单词,判断门是否可以开。有向图欧拉通路充要条件:D为有向图,D的基图连通,并且所有顶点的出度与入度都相等;或者除两个顶点外,其余顶点的出度与入度都相等,原创 2014-08-18 14:16:00 · 1106 阅读 · 0 评论 -
POJ--2104--K-th Number【划分树模板】
链接:http://poj.org/problem?id=2104题意:给一个原创 2014-09-13 17:04:29 · 798 阅读 · 0 评论 -
POJ--2516--Minimum Cost【最小费用最大流】
链接:http://poj.org/problem?id=2516题意:有k种货物,n个客户对每种货物有一定需求量,有m个仓库,每个仓库里有一定数量的k种货物,然后k个n*m的矩阵,告诉从各个仓库到各个客户位置运送单位第k种货物所需的运费,问满足所有客户需求的最小费用,如满足不了所有客户,则输出-1。思路:题目有点绕,不过多看看也就理解了。这道题算是最小费用最大流的入门题吧,建图很原创 2014-08-16 13:35:46 · 775 阅读 · 0 评论 -
POJ--3422--Kaka's Matrix Travels【最小费用最大流+拆点】
链接:http://poj.org/problem?id=3422卡卡题意:卡卡的矩阵之旅,有一个n*n的矩阵,卡卡要从左上角走到右下角,每次他只能往右或往下走,卡卡可以走k遍这个矩阵,每个点有一个num值,卡卡走到这里可以获得num点,一个点只能获得一次num值,问卡卡走完k遍后身上num值最大可以是多少?思路:其实看到这题时没思路,图论书上说了建图的方式,但原创 2014-08-16 20:55:37 · 1200 阅读 · 1 评论 -
UVa1151&POJ2784--Buy or Build【kruskal+二进制枚举】
链接:UVa http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3592POJ http://poj.org/problem?id=2784题意:告诉你n个点的坐标,建立一颗最小生成树,不过有q个套餐,套餐是连通某些点,并有一定花费,求原创 2014-08-28 16:51:33 · 1009 阅读 · 0 评论 -
UVa1395&POJ3522--Slim Span【kruskal】瓶颈生成树
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4141题意:给出n个顶点,m条边,求一个生成树,使得最大边与最小边的差值最小。思路:求一个生成树使最大边最小是瓶颈生成树。对于此题,我们枚举每一条边做最小边的情况,找对应的最小生成树的最原创 2014-08-28 14:23:37 · 1015 阅读 · 0 评论 -
POJ--1273--Drainage Ditches【Dinic模板】【isap模板】网络最大流
链接:http://poj.org/problem?id=1273题意:农夫的农场被水淹了,他建了一些排水沟来排水,最终把这些水排到小河里,现有n个点,节点1~n-1为池塘,水从1开始流,n为小河。然后有m条排水沟,每条排水沟告诉起点、终点、最大水流速度,现在求这个排水系统的最大排水速度。网络最大流裸题,dinic模板#include#include#include#in原创 2014-08-08 11:22:01 · 863 阅读 · 0 评论 -
POJ--1699--Best Sequence【扩展KMP+DFS】
链接:http://poj.org/problem?id=1699题意:给出n个字符串,求他们相连的最小长度,如果首尾字母相同则可以共用相同部分,比如两个串ABCDEF和DEFGHI,他们相连为ABCDEFGHI,最小长度为9,中间的DEF部分共用了。思路:由于数据量较小,首先对每两个字符串a,b用扩展KMP求出a连在b之后可以共用的长度,用数组B[i][j]表示第j个字符串连接在原创 2014-09-11 02:05:43 · 1172 阅读 · 0 评论 -
POJ--3308--Paratroopers【Dinic】二分图顶点覆盖+网络最大流
链接:http://poj.org/problem?id=3308题意:未来世界火星人要入侵地球,他们要派一些伞兵来摧毁地球的兵工厂,兵工厂可以视为一个m*n的矩阵,现在知道了他们每个伞兵的降落位置。为了粉碎火星人的阴谋,我们需要在某行或某列来架一个机关枪来消灭一整行或一整列的火星人,但是在这需要一定的花费,告诉每行及每列架机关枪的花费,总花费是每行及每列的花费相乘。求使得火星人全部被消灭的最原创 2014-08-13 20:51:01 · 692 阅读 · 0 评论 -
POJ--2112--Optimal Milking【Floyd+Dinic+二分答案】
链接:http://poj.org/problem?id=2112题意:有k个挤奶器,编号1~k,c头牛,编号k+1~k+c,每个挤奶器最多能给m头牛挤奶,给你一个k+c的邻接矩阵,要求每头牛都能挤奶并且要求c头牛需要走的所有路程中的最大路程最小,求这个最小的路。思路:1. 先用floyd处理出多源最短路2. 用二分枚举答案的可能,初始上限应该为(200+30)*200,但原创 2014-08-09 14:37:06 · 1331 阅读 · 0 评论 -
POJ--2391--Ombrophobic Bovines【拆点+Floyd+Dinic优化+二分答案】网络最大流
链接:http://poj.org/problem?id=2391题意:有f个草场,每个草场当前有一定数目的牛在吃草,下雨时它可以让一定数量的牛在这里避雨,f个草场间有m条路连接,每头牛通过一条路从一点到另一点有一定的时间花费,现在要下雨了,农场主发出警报牛就会立即去避雨。现在告诉每个草场的情况,以及m条边的信息。农场主至少需要提前多久发出警报才能保证所有牛都能避雨?如果不是所有牛都能成功避雨原创 2014-08-12 03:12:21 · 1251 阅读 · 0 评论 -
POJ--2752--Seek the Name, Seek the Fame【KMP】
链接:http://poj.org/problem?id=2752题意:原创 2014-09-03 00:57:09 · 914 阅读 · 0 评论 -
POJ--2019--Cornfields【二维RMQ】
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define PI acos(-1.0)#def原创 2014-10-17 16:19:41 · 679 阅读 · 0 评论 -
POJ--1128--Frame Stacking【拓扑排序】
链接:http://poj.org/problem?id=1128题意:有几张图片,给你叠加到一起之后的图,问叠加的可能性,如有多种可能则按字典序由小到大输出。思路:根据给出的图形建一个图,被覆盖的图片向覆盖它的图片建边,然后拓扑排序。拓扑排序按照字母顺序从小到大找入度为0的点,用dfs形式的拓扑排序,就按照字典序输出了。POJ1270的做法也类似: 代码原创 2014-11-02 00:33:57 · 1022 阅读 · 0 评论 -
POJ--2289--Jamie's Contact Groups【二分图多重匹配+二分答案】
链接:http://poj.org/problem?id=2289题意:有n个人,m个分组,每个人可以分配到一些组别,问如何分能使得人数最多的组别人数最少。思路:这道题二分+网络流也可以做,我这里是二分图多重匹配的做法。因为一个组别是一对多的关系,所以是多重匹配,我们二分多重匹配的限制,得到最小的限制可使二分图匹配,这个限制就是答案。网上找的模板#include#原创 2014-10-16 10:57:25 · 1094 阅读 · 0 评论 -
POJ--1966--Cable TV Network【无向图顶点连通度】
链接:http://poj.org/problem?id=1966题意:一个无向图,n个点,m条边,求此图的顶点连通度。思路:顶点连通度,即最小割点集里的割点数目,一般求无向图顶点连通度的方法是转化为网络流的最小割。建图:(1)原图每个点i拆点,拆为i‘和i’‘,i’到i‘’连一条弧容量为1。(2)对于原图中存在的边(u, v),连两条弧(u‘, v')和(v'', u原创 2014-10-16 11:20:40 · 886 阅读 · 0 评论 -
POJ--2892--Tunnel Warfare【线段树】区间合并
链接:http://poj.org/problem?id=2892题意:有n个村庄排成一排,三种操作:1. D x 摧毁村庄x2. Q x 询问村庄x的最长一段没有被摧毁的村庄数量3. R 恢复上一个被摧毁的村庄思路:线段树区间合并,lsum记录当前节点往左的最长连续距离,rsum记录当前节点往右的最长连续距离。#include#include#in原创 2014-11-13 17:43:53 · 762 阅读 · 0 评论 -
POJ--1679--The Unique MST【判断MST是否唯一】
链接:http://poj.org/problem?id=1679题意:告诉你有n个点,m条边,以及m条边的信息(起点、终点、权值),判断最小生成树是否唯一判断MST是否唯一的思路是这样:对于每条边如果有和他相等权值的边,则做一个标记,然后进行一遍kruskal或prim找出最小生成树权值,然后对于每个使用过并且有相等边标记的边,把它从图中删去,再进行一遍kruskal或prim,原创 2014-08-05 11:55:40 · 1065 阅读 · 0 评论 -
POJ--2284--That Nice Euler Circuit【平面图欧拉公式】
链接:http://poj.org/problem?id=2284题意:一个自动画图的机器在纸上(无限大)画图,笔尖从不离开纸,有n个指令,每个指令是一个坐标,因为笔尖不离开纸,所以相邻的坐标会连有一条直线,最后画笔再回到起始点。所以这个图是一个连通图,并且画笔走过的路径是一个欧拉回路。现在问题来了,这个图形将平面分成了几部分。思路:题目说明白一些就是告诉你一些几何信息问平面被分成原创 2014-10-23 13:02:18 · 910 阅读 · 0 评论 -
POJ--2553--The Bottom of a Graph【tarjan缩点】
题意:告诉你顶点数和边数并输入边的信息,按从小到大输出出度为0的点。其实这道题英文我没看懂,看的图论书才懂的。就是tarjan缩点,和POJ2186的代码一模一样,直接用2186的代码修改一下就AC了。可以当作tarjan缩点的模板用了。#include#include#include#include#include#include#include#include#原创 2014-03-12 21:40:05 · 682 阅读 · 0 评论 -
POJ--2762--Going from u to v or from v to u?【tarjan缩点+拓扑排序】
本题虽然求解的是单连通性,但首先要转换成强连通分量的求解。这是因为,强连通分量中的顶点间存在双向的路径,因此可以将每个强连通分量收缩成一个新的顶点。在有向图的处理中经常需要将强连通分量收缩成一个顶点。 以样例输入中的测试数据为例,图8.22(a)描述了该测试数据。在图(b)中,将2个强连通分量各收缩成1个新的顶点。 强连通分量收缩后,再求其拓扑排序。假设求得的拓扑序存储在 topo[MAX原创 2014-03-12 00:07:39 · 638 阅读 · 0 评论 -
POJ--3368--Frequent values【RMQ】
链接:http://poj.org/problem?id=3368题意:给你一个序列,n个数,序列是有序的,q个询问,问区间(l,r)中出现频率最高的数字出现了几次。思路:因为序列是有序的,可以把序列相同部分合并,然后存成一个新的数组,并增加一个值num表示数字出现的次数,找区间(l,r)中出现频率最高的数字,就是找num的最大值了,区间最大值,RMQ可做,线段树也可做,我用RMQ原创 2014-09-25 11:20:25 · 737 阅读 · 0 评论 -
POJ--2585--Window Pains【拓扑排序】
链接:http://poj.org/problem?id=2585题意:有一个4*4的屏幕,有9个窗口各占2*2大小,保证不会存在一个窗口完全覆盖任一个窗口,但每个窗口都会部分被其他窗口覆盖(因为4*4和2*2 = =、)现在需要你判断电脑是否死机。(死机的话会出现无法判断A覆盖B还是B覆盖A的情况)思路:无法判断A覆盖B还是B覆盖A,可以当做是图中A和B之间存在环,我们可以把每个原创 2014-08-26 15:11:39 · 814 阅读 · 0 评论 -
POJ--1094--Sorting It All Out【拓扑排序】
链接:http://poj.org/problem?id=1094题意&思路:直接拓扑排序。多解输出一串英文,有环输出一段英文,唯一解输出一段英文及排序结果。细节:题目描述不是很清楚,如果不看discuss我肯定要WA出翔。discuss里总结了两点关键的:1. 输入一条边时如果此时拓扑有解就输出这个解,即使后面的边成有向环也不管了,所以每次输入的时候都得进行拓扑排序。原创 2014-08-25 21:36:48 · 569 阅读 · 0 评论 -
POJ2349&ZOJ1914--Arctic Network【最小生成树】
链接:http://poj.org/problem?id=2349题意:北极有一些村庄,现需要在这些村庄间建立起通讯,有s个卫星频道,任何两个拥有卫星频道的村庄都可以直接通过卫星进行通讯而无视距离,没有卫星的村庄通过无线电进行通讯,并且这两个村庄的距离不能超过D,D值取决于无线电收发器的功率,功率越大,D值越大,但价格也越高,出于购买费用和维护费用的考虑,所有村庄的无线电收发器都相同,即D值相原创 2014-08-04 21:38:36 · 880 阅读 · 0 评论 -
POJ1789&ZOJ2158--Truck History【最小生成树变形】
链接:http://poj.org/problem?id=1789题意:卡车公司有悠久的历史,它的每一种卡车都有一个唯一的字符串来表示,长度为7,它的所有卡车(除了第一辆)都是由以前的卡车派生出来的。现在一些砖家想研究这些卡车的历史,他们定义了卡车类型编码的距离:卡车编码字符串(长度7)相同位置字符不同的个数。比如一个卡车编码是aaaaaaa,另一个是bbaaaaa,则他们的距离是2,。他们又原创 2014-08-04 20:10:16 · 781 阅读 · 0 评论 -
POJ1861&ZOJ1542--Network【最小生成树】
链接:http://poj.org/problem?id=1861最小生成树裸题,输出生成树的最长边、节点个数、节点坐标。另外OJ上样例输出时错的,4个点的最小生成树怎么可能4条边。。主要是熟悉手写kruskal#include#include#include#include#include#include#include#include#include#in原创 2014-08-02 11:50:57 · 787 阅读 · 0 评论 -
POJ--2570--Fiber Network【floyd+位运算】
题意:一些公司决定搭建一些光纤网络,单向的,如果从第一点到第二点,有ab两个公司可以搭建,第二点到第三点有ac两个公司可以搭建,第一点到第三点有d公司可以搭建,则第一点到第三点有a、d两个公司可以搭建,a是通过第二点,d是直接连接两点。现在给你这么一个光纤网络,问某两点之间有哪些公司可以搭建起网络。首先这题是个多源点的,有点像最短路的思想,如果让我做我肯定硬着头皮找相同的字母,不过我看原创 2014-08-01 11:30:19 · 759 阅读 · 0 评论 -
POJ--1122--FDNY to the Rescue!【最短路】
题意:给你一个邻接矩阵信息,某点发生火灾,告诉你一些位置有消防队,问各个消防队到火灾地点的最短时间,并输出最短路的路径,输出按最短时间由小到大排序。就是一个最短路问题,输出路径,直接dijkstra了,1A还是挺爽的#include#include#include#include#include#include#include#include#include原创 2014-07-27 23:41:54 · 879 阅读 · 0 评论 -
POJ1135&&ZOJ1298--Domino Effect【dijkstra+枚举】
题意:有一堆多米诺骨牌,其中有n个关键牌,起到连接的作用,某些关键牌之间有一串普通牌,推倒用,推倒有一定时间消耗,每次都从第一个关键牌开始推,问推倒需要多少时间。结果有两种可能的情况:第一种是最后一个倒下的是一个关键牌。第二种是最后一个倒下的是两个关键牌之间的一个普通牌,不一定是正中间的那个,不过题目只需要输出关键牌或者两个关键牌之间,第二种情况不需要知道具体的牌时哪个。思路:di原创 2014-07-26 21:23:32 · 739 阅读 · 0 评论 -
POJ--3259--Wormholes【SPFA判负权值回路】
题意:有n个点,之间有m条双向路径,还有w个虫洞,单向,从一点到另一点需要花费时间,但是有虫洞的话会减少时间,一个人想要走某一条路使得他能碰到过去的自己,问这个图是否能让他实现他的想法。其实就是判一个图是否存在负权值回路,SPFA可以实现,原理是:如果存在负权值回路,那么从源点到某个顶点的距离就可以无限缩短,因此就会无限入队,所以在SPFA中统计每个顶点的入队次数,如果超过了n个(顶点原创 2014-07-31 22:58:13 · 801 阅读 · 0 评论 -
POJ--2481--Cows【线段树】
链接 :http://poj.org/problem?id=2481题意:一条直线上长满了三叶草,有n头牛,每头牛都有喜欢的一段三叶草区间 [ si , ei ] ,如果一头牛喜欢的区间包含了另一头牛喜欢的区间,则说明前者比后者强壮,问对于每头牛各有多少头牛比他强壮。这道题排序之后就是线段树区间查询的裸题,排序:对区间初始位置从小到大排,对区间结束位置从大到小排,然后依次开始遍历,原创 2014-07-25 22:19:23 · 1069 阅读 · 0 评论 -
POJ--1611--The Suspects【并查集】
DescriptionSevere acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized as a global threat in mid-March 2003. To minimize transmission to others, the best s原创 2013-05-19 00:55:55 · 577 阅读 · 0 评论 -
POJ--1753--Flip Game【DFS】
链接:http://poj.org/problem?id=1753题意:一个4*4的方格,有白棋或者黑棋,每次操作是一个位置的颜色翻转,即白变黑、黑变白,并且与它相邻的四个位置的颜色也都跟着改变,问最少要变化多少次才能使所有棋子都是白色或者都是黑色。思路:不难看出一个棋子翻偶数次和不翻的效果是一样的,并且如果选定了一些棋子翻,翻的顺序对最后的结果是没有影响的,所以可以用DFS去枚举原创 2014-07-25 12:45:56 · 886 阅读 · 0 评论 -
POJ--1006--Biorhythms【数论】
这是一道应用中国剩余定理的题目。下面这段文字是网上找的,很多地方都有所以我也不清楚出自哪里。中国剩余定理:在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:1. 找出三个数:从3和5的公倍数中找出被原创 2013-12-04 18:31:06 · 661 阅读 · 0 评论 -
POJ--2421--Constructing Roads【最小生成树】
链接:http://poj.org/problem?id=2421题意:n个村庄,告诉你任两个村庄间距离,要建一些路使得任两个村庄都可以互相到达,需要使花费最小,其中有q条路已经建了,求最小花费。把已经建的路的权值改为0,再prim就行了。kruskal做的话,把建好的路用并查集合并,再kruskal就行了#include#include#include#incl原创 2014-08-04 17:30:11 · 731 阅读 · 0 评论 -
POJ--2528--Mayor's posters【线段树+离散化】
题意:在一块木板上贴海报,每次贴海报给一个横坐标范围,在这个范围内贴,按照它给的顺序,海报可以被覆盖,问最后还能看见几张海报。都说这是线段树入门题。。。。结果我还是出翔了,不是在线段树部分,是在离散化部分。我之前看到一个很飘逸的离散化写法,可惜找不到了,这回是这么写的:去重之后再把每个点的后一个值也加入离散化后的数组(如果这个值之前没有的话),这样避免了漏掉中间没被覆盖的情况。原创 2014-07-31 10:25:14 · 950 阅读 · 3 评论