摘要:可以用天津南开的oj提交,我开始案例都没过,一提交AC,因为是特判。题目链接http://acm.nankai.edu.cn/p2123.html最小的路径条数=顶点数-最大匹配数。没一条路径就是一条增广路。我们只需一路递归,只到节点的父亲为-1止,这便是一条路。这题也可以建图,建立一个超级源点,超...
阅读全文
摘要:W 教授正在为国家航天中心计划一系列的太空飞行。每次太空飞行可进行一系列商业性实验而获取利润。现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的全部仪器的集合I={I1,I2,…In}。实验Ej需要用到的仪器是I的子集RjÍI。配置仪器Ik的费用为ck美元。实验E...
阅读全文
摘要:先说一说最佳匹配吧,最佳匹配本属于最大流。带权的二分图,要么求最小权的完全匹配,要么求最大权的完全匹配,具体化问题:分工问题如下:某公司有工作人员x1,x2,...,xn,他们去做工作y1,y2,...,yn,每人适合做其中的一项或几项工作,每个人做不同的工作的效益不一样,我们需要制定一个分工方案,...
阅读全文
摘要:本题的意思是求最大团,并且输出路径。如果用朴素算法时间复杂度太高,如果n是100的话,至少要几秒,要慎用。还有一个就是用DP记录。时间复杂度要低很多。也可以输出路径。#includeusing namespace std;const int N=109;int map[N][N];int sta[N...
阅读全文
摘要:如果对团的知识不够了解的可以看看牛人的http://www.cnblogs.com/pushing-my-way/archive/2012/08/08/2627993.html题意:有n个点求最远距离的k个点的最短的那条边。思路:我们可以求出任意两点的距离,然后二分距离,求K个点的最大团。#incl...
阅读全文
摘要:题意:给出一些点对,你可以在每对中任意选一个,只能选一个,放置一个炸弹,每个炸弹爆炸时都有一个效果范围,会波及到其放置点为圆心,半径为 r 的圆的范围,问如果要让任意两个圆都不相交(可以相切)的话,半径的最大值是多少。二分+2-SAT建图:只要一对点(i,j)的距离小于二分时候的mid的值,那么建立...
阅读全文
摘要:题意:如果i和j之间是喜欢关系,那么它们最多相距w;如果不喜欢就最少要相距w。可以转换成求最短路,spfa算法,如果是负环就输出-1;如果图不连通就输出-1;否则输出最短路。#include#include#includeusing namespace std;const int N=1003;co...
阅读全文
摘要:第一次做差分约束。题意:给你一个N*M的矩阵,求两列数a1,a2,a3...an 和 b1,b2.....bm使得对矩阵中的每个数进行下面的操作之后的值在[L,U]之间,操作为:a[i] * m[i][j] / b[j]。 N,M#include #includeusing namespace st...
阅读全文
摘要:本题和hdu1595是一个意思。可以看看http://www.cnblogs.com/BruceNoOne/p/3252895.html#include#includeusing namespace std;const int N=1009;const int inf=1q; int i; ...
阅读全文
摘要:本题的意思是删除任意一条边的情况下都满足的最短路。分析:删除的边一定是最短上的边,才会使得最坏情况下的路径最短。所以需要删除最短路的边后枚举其他边的最短路。这题和hdu3986差不多,这题中边没有重边,而hdu3986有重边。保存路径是要注意。我用的是spfa。也可以用dij+优先队列。#inclu...
阅读全文
摘要:本题和hdu3191是非常相似的,我们只需加一个判断条件dis[e][0]+1==dis[e][1]即可。要记得点的下标。可以看看hdu3191http://www.cnblogs.com/BruceNoOne/p/3248474.html#include using namespace std;c...
阅读全文
摘要:题目的意思是找次最短路的条数,这道题只好用dij算法,通过这题可以很好的理解dij。可以看看大神的思想http://www.cnblogs.com/wally/archive/2013/04/16/3024490.html但是本题本来不应该用优先队列,是因为hdu的数据库太水。我就用了一个循环找最短...
阅读全文
摘要:本题的意思是求多个源点的最短路,比较简单,可以反过来求,把终点做源点。但是也可以构造一个源点。我用了dijkstra写的#include using namespace std;const int N=1009;struct node{ int v,w,next;}e[N*N];int hea...
阅读全文
摘要:题目的意思是给定n个顶点m条边,边允许重边,取小值;计算标记点的最短路。有两种询问方式,第一种,就是标记点,第二种就是输出两点间的最短路。本题是要我们了解floyd的思想,还有就是,本题会爆int。应该用__int64 或long long型;我就被坑了两次;#includeusing namesp...
阅读全文
摘要:这个题的意思是一个有向图,你最多能加多少条边,它还不会是强连通图,加的边不能有重边。只需这个图变成两个强连通,而且是一个连通分量只能指向另一个连通分量,可以先缩点。真心没想到#includeusing namespace std;const int N=100010;struct node{ ...
阅读全文