zoukankan      html  css  js  c++  java
  • 网络流专题

    【HDU】
    1532Drainage Ditches(基础)    [最大流]

    模板题,Dinic(数组)算法解决,写的时候,没考虑重边,WA了N次

    3549 Flow Problem(基础)    [最大流]

    又重新默写了一遍Dinic

    3572 Task Schedule    [最大流]任务分配,判断满流

    第一道需要自己构图的网络流,不会有重边,所以用链表保存边,裸Dinic超时用当前弧优化解决,据说ISAP比Dinic快多了,等优化后的Dinic不行了再学吧

    2732 Leapin' Lizards(难)    [最大流]

    想清楚怎么构图就简单,第一道我觉得代码需要写注释的题目第一次拆点,因为节点有限制流量,必须把一个拆成两个,两点之间的建一条边,流量为限制流量

    和上一题3572 Task Schedule有所不同,虽然上一题节点也有限制流量,但上一题节点出来直接到汇点,不需要拆1个为2个,不像这一题还会跳到其他节点


    3338 Kakuro Extension    [最大流][数和]神奇最大流行进列出

    没有提示绝想不出来居然可以用网络流解决!

    问题等价于给定n个等式和m个未知数(1<=Xi<=9, 1 <= Yi <=999),等式右边的Yi已知,每个Xi只出现两次,求可行解

    因为Xi的最小值是1,取值可转化为(0 <= Xi <= 8 , 0 <= Yi - t <= 999 - t), t 为等式左边的Xi的个数,这样就可以用网络流解决

    如果Xi出现三次就不知道怎么解决了?


    2883 kebab    [最大流]判断满流

    一开想用TaskSchedule的方法解决,但是时间跨度太大,想不出来,看discuss别人说排序,就想到可以用时间区间来表示节点,时间区间应该也可以解决TaskSchedule,只是建边的时候节点流量上限有所区别,一天只能有1台机器处理任务X


    3605 Escape    [最大流](多重匹配)

    已用多重匹配解决


    4183 Pahom on Water    [最大流]来回走不重复点的网络流.

    看discuss说流量边为1,找是否存在从原点到汇点可行流为2的网络流,除源点和汇点外每个点流量限制都为1,做完这题发现,网络流可以找指定两个顶点的不含重复点的欧拉回路


    4240 Route Redundancy    [最大流]一条流最大的路径

    先求最大流

    然后就有歧义,我直接在最大流里找一条流最大的路径,AC了,看discuss发现自己错了,一条流最大的路径不一定在最大流里,可以二分求解,但自己想用Dijkstra解决,过了Discuss的数据,WA了,不知道是自己算法有问题还是题意就是在最大流里找路径


    3081 Marriage Match II    [二分最大流]+并查集

    一开始以为并查集和找边最少的集合就可以了,后来发现有交叉的情况,感觉这题的网络流模型和TaskSchedule一样,但是感觉怪怪的,没什么自信,构图很麻烦, 上网找有没有更好的方法,但是没有,只能二分时每次都要重新构图

    WA了一个晚上,以为是网络流问题,到网上找解题报告,发现可以暴力匹配枚举,还是WA,想到可能是并查集写的有问题,错误是每次直接合并,没有找各自的根合并,用两种方法都能过

    3277 Marriage Match III    [二分最大流]同上,多了拆点

    同上,只是需要把每个女孩拆为3个点,写的我就担心会超时,果然超了,最后老老实实去学速度更快的ISAP算法,学的是刘汝佳《训练指南》上,拿模板刷了POJ的两道入门题,发现d[],每次没有初始化,一旦遇到到不了的点的话,他就会默认使用上个测试用例的数据,发现之后改了,AC了,果然比Dinic快


    3416 Marriage Match IV    [最大流]最短路+最大流

    看错题意了,以为是每次都选择剩余路径的最短路(这是不是裸的网络流?),看discuss才知道原题意是每次只能走所有路径(已用过虽然不能用,但也要算在最短路径里)的最短路,以每条在最短路里的边建网络流图,求最大流


    2485 Destroying the bus stations    [最大流]最短路+最大流


    3468 Treasure Hunting    [最大流](二分匹配)+最短路

    之前用二分图匹配做,WA了还没有AC,今天重看一下WA的代码,还是觉得没有问题,但是发现了一个warning,BFS()有可能没有返回值,在最后加上return true,就AC了,这可能是不同编译器的问题,我用MS2010在函数没有返回值的时候,默认返回True, 而Oj上的C++默认返回值可能是True或False


    3998 Sequence(难)    [DP+最大流]最长上升子序列

    和3416 Marriage Match IV 很类似,3416 Marriage Match IV是最短路径中的边只能用一次,这题最长上升序列中的点只能用一次,多了一步拆点
    4309 Seikimatsu Occult Tonneru    [最大流]枚举状态+最大流
    3472 HS BDC    [混合欧拉]

    【POJ】

    1149 PIGS(较难)    [最大流] 绝对经典的构图题
    1273 Drainage Ditches(入门题)    [最大流]
    1459 Power Network(入门题)    [最大流]
    3281 Dining(入门题)    [最大流]
    2112 Optimal Milking(中等)    [二分最大流]
    2289 Jamie's Contact Groups(中等)    [二分最大流]
    2391 Ombrophobic Bovines(中等)    [二分最大流]
    2455 Secret Milking Machine(中等)    [二分最大流]
    3228 Gold Transportation(中等)    [二分最大流](并查集)
    2699 The Maximum Number of Strong Kings(较难)    [枚举人数 + 最大流]
    3498 March of the Penguins(中等)    [最大流]枚举汇点,满足点容量限制的网络流
    1637 Sightseeing tour(难)    [混合欧拉]

  • 相关阅读:
    股市行情指标计算原理和趋势反映--量化交易1-基础
    建立ssh反向隧道
    Linux学习截图保存
    Java内存泄漏
    Java如何正确比较浮点数
    Github使用
    矩阵向量求导
    深度神经网络反向传播算法
    深度神经网络模型与前向传播
    Unity(八)脚本生命周期
  • 原文地址:https://www.cnblogs.com/xchaos/p/6512479.html
Copyright © 2011-2022 走看看