002 算法竞赛
ACM学习过程中的各种题解、想法
有理想的咸鱼丶
没有付出,就不要去抱天怨地!没有汗水与泪水,是编制不出辉煌的人生的!
展开
-
网络流入门—用于最大流的Dinic算法
最早知道网络流的内容便是最大流问题,最大流问题很好理解:解释一定要通俗!如右图所示,有一个管道系统,节点{1,2,3,4},有向管道{A,B,C,D,E},即有向图一张. [1]是源点,有无限的水量,[4]是汇点,管道容量如图所示.试问[4]点最大可接收的水的流量?这便是简单的最大流问题,显然[4]点的最大流量为50死理性派请注意:流量是单位时间内的,总可以了吧!原创 2014-07-12 10:42:35 · 612 阅读 · 0 评论 -
ACM 网络流
就是给你一个管道图(可以类比许多xian)原创 2014-07-11 10:50:28 · 1370 阅读 · 0 评论 -
有上下界的网络流
摘自http://www.cnblogs.com/kane0526/archive/2013/04/05/3001108.html原创 2014-10-01 16:59:29 · 909 阅读 · 0 评论 -
HDU 1116 &&POJ 1386 Play on Words(欧拉回路)
HDU 1116 &&POJ 1386 Play on Words(欧拉回路)原创 2015-05-07 17:04:22 · 797 阅读 · 0 评论 -
POJ 3164Command Network && UVA 11183 Teen Girl Squad 最小树形图
最小树形图:简单来说,求一个图的G0的最小树形图,先求出最短弧集合E0。若E0不存在,则图G0的最小树形图不存在。若存在且不含有向环,则E0就是T0中的所有的边。如果E0存在且含有有向环,则收缩有向环为一个点u,并形成图G1,继续且G1的最小树形图直至图Gi,若图Gi无最小树形图,则图G0也不存在最小树形图,若Gi有最小树形图Ti.则逐层展开得到T0 具体可以参考这位大牛写的过程:http://w原创 2015-05-07 20:33:57 · 804 阅读 · 0 评论 -
UVA 10054 The Necklace
10054 The NecklaceMy little sister had a beautiful necklace made of colorful beads. Two successive beads in the necklaceshared a common color at their meeting point. The figure below shows a segment...原创 2015-05-21 16:31:54 · 645 阅读 · 0 评论 -
UVALive 3523 Knights of the Round Table(二分图+双连通分量)
DescriptionBeing a knight is a very attractive career: searching for the Holy Grail, saving damsels in distress, and drinking with the other knights are fun things to do. Therefore, it is not very...原创 2015-05-22 17:19:23 · 889 阅读 · 0 评论 -
POJ 1258 Agri-Net
题意:就是要你求最小生成树所需的最小距离思路:Kruskal算法AC代码: #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define N 125000int u[N],v[N],w[N],r[N];int f[520],str[...原创 2014-07-22 20:06:44 · 775 阅读 · 0 评论 -
HDU 1233 还是畅通工程
Problem Description某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随...原创 2014-07-14 20:50:47 · 909 阅读 · 0 评论 -
POJ 3020 Antenna Placement
题意:一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线? 思路:二分图难的不是它的代码多难,而是它该怎么建立。像本题,初看好像与二分图无关,但是我们稍微转化一下,就发现,这就是一个二分图的问题了 首先,我们可以从第一个*,也就是城市开始标记。例如:*** 标记为...原创 2014-07-11 16:22:16 · 717 阅读 · 0 评论 -
UVAalive 3027 Corporative Network(并查集的路径压缩维护)
A very big corporation is developing its corporative network. In the beginning each of the N enterprises of the corporation, numerated from 1 to N, organized its own computing and telecommunication ce...原创 2015-07-22 16:03:16 · 535 阅读 · 0 评论 -
POJ 1798 Truck History
DescriptionAdvanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for vegetable delivery, other for furniture, or for bricks. The company has its own code describing each...原创 2014-07-16 21:36:49 · 1044 阅读 · 0 评论 -
UVA alive 4487 Exclusive-OR(加权并查集+异或运算的理解)
You are not given n non-negative integers X0, X1,..., Xn-1 less than 220, but they do exist, and their values never change.I'll gradually provide you some facts about them, and ask you some question...原创 2015-07-24 20:00:13 · 952 阅读 · 0 评论 -
HDU 2063 过山车
Problem DescriptionRPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿...原创 2014-07-10 20:20:44 · 603 阅读 · 0 评论 -
POJ 2485 Highways
题意:给你一个数n,代表有n个村庄,然后要你输入n行n列个数,第i行的第j个元素代表i村与j村的距离,要你求出连通n个村庄所需修的最短路所需要的最大边思路:用Kruskal算法求AC代码: #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;...原创 2014-07-22 17:25:09 · 860 阅读 · 0 评论 -
HDU 4786 Fibonacci Tree(最小生成树的变形)
Problem Description Coach Pang is interested in Fibonacci numbers while Uncle Yang wants him to do some research on Spanning Tree. So Coach Pang decides to solve the following problem: Consider a...原创 2014-11-14 00:34:09 · 1622 阅读 · 0 评论 -
最小生成树
Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗伯特·普里姆(英...转载 2014-07-14 19:27:01 · 1414 阅读 · 0 评论 -
POJ 3041 Asteroids
DescriptionBessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 500). The grid contains K asteroids (1 <= K <= 10,000), whic...原创 2014-07-10 21:23:29 · 641 阅读 · 0 评论 -
HDU 3371 Connect the Cities(最小生成树)
Problem DescriptionIn 2100, since the sea level rise, most of the cities disappear. Though some survived cities are still connected with others, but most of them become disconnected. The government ...原创 2014-09-26 19:31:34 · 868 阅读 · 0 评论 -
POJ 3522 Slim Span
Given an undirected weighted graph G , you should find one of spanning trees specified as follows.The graph G is an ordered pair (V, E) , where V is a set of vertices {v1, v2,..., vn} and E is a set...原创 2014-09-06 21:38:44 · 866 阅读 · 0 评论 -
HDU 2473 Junk-Mail Filter (并查集的删除操作)
Problem DescriptionRecognizing junk mails is a tough task. The method used here consists of two steps:1) Extract the common characteristics from the incoming email.2) Use a filter matching the set...原创 2015-07-25 09:55:27 · 782 阅读 · 0 评论 -
CSU 1506 Problem D: Double Shortest Paths(最小费用最大流)
题意:2个人从1走到n,如果一条路第一次走则是价值di,如果第二次还走这条路则需要价值di+ai,要你输出2个人到达终点的最小价值!太水了!一条边建2次就OK了!第一次价值为di,第二次为ai+di,添加源点汇点跑最小费用最大流就OK了!AC代码: #include<iostream>#include<string>#include<algori...原创 2015-08-23 21:07:05 · 694 阅读 · 0 评论 -
POJ 1751 Highways(最小生成树)
DescriptionThe island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor system of public highways. The Flatopian government is aware of this problem and has already const...原创 2014-09-12 11:11:42 · 1417 阅读 · 1 评论 -
POJ 2784 Buy or Build
DescriptionWorld Wide Networks (WWN) is a leading company that operates large telecommunication networks. WWN would like to setup a new network in Borduria, a nice country that recently managed to g...原创 2014-09-10 10:16:54 · 1149 阅读 · 0 评论 -
UVA 11987 Almost Union-Find (带权并查集的操作及并查集的删除操作)
I hope you know the beautiful Union-Find structure. In this problem, you're to implement something similar, but not identical.The data structure you need to write is also a collection of disjoint se...原创 2015-07-26 10:22:52 · 655 阅读 · 0 评论 -
HDU 1598 find the most comfortable road
对于中文题,直接讲思路吧!思路:一看题目,兴奋啊,貌似是求最大流相关的问题,但是仔细审题一看,发现是要你去求最大速度与最小速度之差最小的路!最大最小之差最小,那么我们就可以联想到贪心的问题了,这题还有个地方在于能到达目的地,那么就是说明要连通给定的起点与终点了,所以我们可以考虑并查集的思想了!所以本题的大致的思路可以确定为,我们可以对所有边的权值就行排序,然后从0开始对所有的点进行枚举,连...原创 2014-08-11 10:53:59 · 1123 阅读 · 0 评论 -
POJ 2524 Ubiquitous Religions
DescriptionThere are so many different religions in the world today that it is difficult to keep track of them all. You are interested in finding out how many different religions students in your un...原创 2014-07-17 13:02:57 · 868 阅读 · 0 评论 -
ZOJ 1654 Place the Robots(最大匹配)
Robert is a famous engineer. One day he was given a task by his boss. The background of the task was the following:Given a map consisting of square blocks. There were three kinds of blocks: Wall, Gra...原创 2015-07-29 11:02:05 · 708 阅读 · 1 评论 -
UVALive 2957 Bring Them There (最大流+拆点)
题意:把K个超级计算机从S运到T,其中有m条双向隧道,隧道在用的时候只能从一边到另外一边,要你求出多少天能够完成任务,并把每一天的移动路径的边的两个节点输出思路:ORZ,这样都能想到网络流,表示太弱!看了白书之后才知道,原来可以进行拆点!每天,我们可以假设每个点是ui,那么我们可以找到存在隧道的点ui与vi,那么ui可以到达v(i+1),容量为1,vi可以到达u(i+1)容量为1,那么我们...原创 2015-05-28 17:05:22 · 587 阅读 · 1 评论 -
UVA 11248 Frequency Hopping (最大流+最小割)
题意:与正常的网络流一样,不过给定的第一行的最后一个数C的意思是能能否在给定的图里求出修改某一条边或者不修改某一条边是的这个图的流变成C,如果没修改就能有C,那么输出possible,通过修改能得到C输出possible+能修改的边集合,否则输出no possible思路:(自己的是死暴力方法,直接爆了,想了很多法子都来不起,最后参照白书的思路来起了)可以先求出最大流,然后求出最小割里的弧,依...原创 2015-05-27 20:59:28 · 759 阅读 · 0 评论 -
HDU 1856 More is better
Problem DescriptionMr Wang wants some boys to help him with a project. Because the project is rather complex, the more boys come, the better it will be. Of course there are certain requirements.Mr ...原创 2014-07-15 20:48:19 · 752 阅读 · 0 评论 -
HDU 1285 确定比赛名次(拓扑排序模板)
题意还是比较容易理解的,关键要看到后面的:合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;思路:这道题就是拓扑排序的经典应用了,用队列做的考虑优先编号小的出队就可以了。拓扑排序:拓扑排序是对有向无回路图(DAG)顶点的一种排序,它使得如果存在从u到v的有向路径,那么满足序列中u在v前。所以我们的算法可以描述为这样一个过程:1、找到整个图中所有的度为0的点,将这些点压...原创 2014-08-06 08:25:39 · 1035 阅读 · 1 评论 -
HDU 3259 Wormholes
题意:就是给你一个n,m,t n代表有多少个点,m代表有多少个双向的边 t代表的是虫洞,现在要你判读是否还可以穿越到过去的点虫洞的意思是给你的边是单向的,并且是负权值(输入的时候是正数) 思路:是否可以穿越回过去的点,即有没有负环,果断套用模板,dijkstra算法不能检测负环AC代码: #include<cstdio>#include&l...原创 2014-07-31 22:46:49 · 984 阅读 · 0 评论 -
POJ 1459 Power Network
题意:我就直接给出题目要求的东西吧:在一个网络图中有n个点,其中有np个发电站,nc个用户,m条电线;每个发电站,用户,和电线都对应有一个最大的电流;让求出该网络中最大的电流;添加一个源点为(0)和一个汇点(n+1),源点与发电站相连,电流量为发电站的最大电流;用户与汇点相连,电流量为用户需要的最大电流。思路:最大流的一个简单变形,只要处理好题目给定的数据,直接套用模板就OK了!A...原创 2014-07-28 17:04:00 · 791 阅读 · 0 评论 -
HDU 1232 畅通工程
Problem Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 10...原创 2014-07-14 15:25:56 · 782 阅读 · 0 评论 -
POJ 2492 A Bug's Life
题意:给你一个n m,n代表有多少只昆虫,m代表2只给定的昆虫可以交配要你来判断是否出现了同性的昆虫相交的情况思路:并查集的一个小的应用。运用类别转移来做,详细请看代码,这个代码网上叫类别转移啊,发现新大陆了 #include<stdio.h>#include<string.h>int f[2005],link[2005];int find(int ...原创 2014-07-21 17:39:51 · 777 阅读 · 0 评论 -
拓拔排序算法
一、定义: 拓扑排序是对有向无回路图(DAG)顶点的一种排序,它使得如果存在从u到v的有向路径,那么满足序列中u在v前。例如:(来自于某牛) 最后变成 所以我们的算法可以描述为这样一个过程:1、找到整个图中所有的原点,将这些点压进队列(栈)中2、从队列(栈)中取出一点,输出,将该点及它的边删除,找到它所指向的点,如果改点是一个原点(删除指向它的点后),则压入队列...原创 2014-07-23 10:26:43 · 1601 阅读 · 0 评论 -
HDU 1325 Is It A Tree?
Problem DescriptionA tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the followin...原创 2014-07-15 16:48:04 · 835 阅读 · 0 评论 -
POJ 1062 昂贵的聘礼
思路:这是道Dijkstra算法的变形,要想做出这道题,个人认为需要深刻地理解这个算法的概念,做题目是为了什么?那就是锻炼你的思维的基础上让你更深地理解算法模板(个人见解,错了勿喷2333333)所以对于本题,可以在草稿本上把每个数写一写,你就会发现可以建图了,从第一个位置开始写它的替代品的位置,那么我们可以考虑到兑换的时候刚好是一条边。比如物品1只要你把物品3弄来那么就可以2000元给你...原创 2014-07-31 20:12:19 · 926 阅读 · 0 评论 -
hunnu OJ 11564 Easy Delete(二维坐标的离散化处理+最大匹配)
题意:•给出两类点坐标–一类可删除–一类不可删除•选出最少的行或列,删除所有要删除的点。 思路:•首先看到坐标范围很大,第一点要做的就是离散化。•接着,将行看成二分图的X集合,将列看成二分图的Y集合,于是,我们要删除的点,就是X连接Y的一条边。•最后,我们要求的就是最少的点覆盖所有的边。在二分图中,最大匹配==最小点覆盖。需要注意的地方:•判断每一个要删除的...原创 2015-08-10 15:31:04 · 1487 阅读 · 0 评论