摘要:这题难点建图。 建图方式如下:要是在给定的s时间内能跑到洞穴(判断两点距离),那么那两个点是连通的,否则就不连通
阅读全文
摘要:这题也是赤裸裸的最大二分匹配。在最后加个判断即可。 注意,用cin会超时,要用scanf
阅读全文
摘要:赤裸裸的最大二分匹配入,直接套匈牙利算法模板
阅读全文
摘要:这题没有给出源点和汇点,需要自己添加。 添加一个与所有类型为p的点相连的源点和一个与所有类型为c的点相连的汇点,边的值为题目给的,而不是INF。 例外这题输入比较麻烦。
阅读全文
摘要:第一次写最大流,照着书上面敲。 用Edmonds_karp算法,每次通过bfs搜出一条增广路径加到流中,直到不能搜到为止。这题要注意有重边,多条重边要加在一起,用+=
阅读全文
摘要:这题没啥好说的,题目看了很久,才明白,原来是虫洞。用判断是否存在负权环,用bellman_ford即可
阅读全文
摘要:题目是求一个序列,要满足给定条件,求它的最少个数 设d[i]为在[0, i)区间内答案的个数,其中d[0] = 0 则对题目输入的a, b ,c有:d[b+1] – d[a] = c 题意隐藏的不等式有: 0 = d[i+1] – d[i] = 1, d[i] – d[0] = 0 因为是求最少个数,所以 以0为源点求最长路,答案就为d[n] – d[1] 1716,则把上面的c改...
阅读全文
摘要:设x[i] 为第i个营的人数,s[i] = x[1] + x[2] + … + x[i], s[0] = 0 则对于题目 Ci 有: 0 = s[i] – s[i-1] = Ci i, j, k有: s[j] – s[i-1] = k 还有: s[i] = 0 (1 = i = n) , 即 s[i] – s[0] = 0 这题求最小值,以0为源点求最长路
阅读全文
摘要:这题看了很久才看明白题意,就是求最短路,正向图,反向图求最短路,然后求和 这题数据规模很大,分别用了spfa和Dijkstra+heap实现,发现这两个算法差别不大,都在2s左右,Dij+heap貌似快spfa一些
阅读全文
摘要:设a[i] 为第i个小孩得到的糖果数,d[i] 为第i个小孩相对于第1个小孩的糖果数,即有: d[i] = a[i] – a[1], d[1] = 0. 题目输入的A B c 有: a[B] – a[A] = c 即有 (a[B] – a[1]) – (a[A] – a[1]) = c , d[B] – d[A] = c 题目是求最大值,就是求以1为源点的最短路。 注意:用spfa+...
阅读全文
摘要:这题的不等式比较难列,列了很久,也列不全,对那个8小时理解的不透。 设num[i] 为来应聘的在第i个小时开始工作的人数 r[i] 为第i个小时至少需要的人数 x[i] 为招到的在第i个小时开始工作的人数 根据题意有: 0 = x[i] = num[i] x[i] + x[i-1] + …+ x[i-7] = r[i] (题目中的连续工作8小时) 再设 s[i] = x[1] ...
阅读全文
摘要:这题再次对差分约束的超源点有了新的理解。 设d[i] = a[1] + …+a[i],根据题意有: d[si + ni] – d[si-1] = k + 1 d[si+ni] – d[si-1] = k - 1 即 d[si-1] – d[si+ni] = 1 – k 通过求最长路来判断图中是否存在正环。 这题可以通过加超源点,或者不加,加超源点不好想 使用bellman算法,这...
阅读全文
摘要:设d[i]为 第i个工作开始的时间,根据题意有: FAS a b: d[a] + time[a] = d[b] FAF a b: d[a] + time[a] = d[b] + time[b] SAF a b: d[a] = d[b] + time[b] SAS a b: d[a] = d[b] 还有: d[i] = 0 即 d[i] – d[0] = 0 以0为源点开始搜...
阅读全文
摘要:这题加深我对差分约束的源点理解。 这题是判断图中是否存在环(用最短路或最长路), 开始用spfa, 狂WA,想不通,看了讨论说要添加一个超源点,添加了就AC了。 总结:用spfa算法判断图中是否存在环,要保证从源点开始,能到达各个顶点,这样才能保证差分约束里的各个不等式成立。因为要是源点到达不了某个顶点的话(即图是不连通的),那么从该顶点就无法入队,导致从该顶点出发的所有不等式,都没有得到检查...
阅读全文
摘要:设d[i] 为 第i只牛到第1只牛的距离 根据题意有: d[1] = 0; d[b] - d[a] = D(ml) d[b] – d[a] = D(md) d[i] – d[i-1] = 0 题目说牛是从1~n排列下去,这是题目隐藏的条件,刚开始没有加这个条件也能ac d[i] – d[1] = 0 (1= i = n) 以1为源点开始搜索,d[n]就是答案,当d[n] = ...
阅读全文
摘要:这几天学了差分约束,总结一下。 先从百度百科摘录差分约束系统定义: 如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi<=bk(i,j∈[1,n],k∈[1,m]),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系统是求解关于一组变量的特殊不等式组的方法。 差分约束可以转化话单源最短路求解。因为单源最短路径满足三角不等式d[v] <= d[u] + w(u, v), 这里的 <= 可以为改 >= 只要改变一下初始化条件即可。 差分约束题目有两种,一种求最大值,另外一种求最小值。 (1)当题目
阅读全文
摘要:刚看了强连通分量,找来些题练练。发现强连通不会赤裸裸地考,会结合一些其它知识。 这题做得比较曲折,一开始没有强连通,对反向图的每个点进行一次dfs, 发现超时,后来用了强连通,弄了很久才弄出。 解题思路:先把强连通分支压缩成一个点,再组成一个有向无环反向图, 对每个入度为0的点进行dfs, 找出最大的值即可。注意到,答案只能是在反向图入度为0 的点中。
阅读全文
摘要:这题简单的最短路,一开始我还傻傻地去用bfs写,WA了几次后,发现用错方法了,用bfs求最短路,是对每条边权值都相同的图才可以的,后来改用单源最短路径, 这题数据规模比较大(a,b去到1000)不能用floyd算法。
阅读全文