zoukankan      html  css  js  c++  java
  • 一周总结

                                                                       一周总结

    费用流:

      BZOJ 1927 n个点保证每个点都走一次,且走完n个点的   最 小花费。分点,保证每个点只走一次。

      BZOJ2324 n个点k个人保证在走完前i-1个点时,才能走第i个点,求遍历n个点的最小花费。此题建边时要用floyd求出前j个点时两点之间的最小距离d[j][i][j],建边时注意在保证从0点出去k个人的同时,还要在源点和其他的点连容量为1费用为0的边,以保证当点的个数大于人的个数的时候能遍历完所有的点。

    单调队列:

    HDU 2430 话说有n袋豆子,每袋豆子有一个重量wi,求一段连续编号豆子的重量sum%p<=K&&max(sum/p);

    由于数据量较大,用单调队列,先求出前i袋豆子sum[i]%p,并记录位置,由于满足以下条件:

    前提:i<=j

    1.当sum[i]%p<=sum[j]%p  只需找到j前面的i使得上述条件满足即可

    2.当sum[i]%p>sum[j]%p sum[j]%p<=k时无需再找i,因为本身就满足,否则我们可以得两者余数在[k+1,p-1]区间中,则(sum[j]%p-sum[i]%p+p)%p>=k+2.此时也不用找,

    3.综上,我们可以用把sum[i]%p排序,用单调队列解决

    其他单调队列,解法类似

    二分匹配:

    匈牙利算法就不说了。

    重点还是KM算法,KM算法求最优匹配,思想就是对二部图中的x部和y部的节点进行赋权lx[maxn],ly[maxn]然后再来一个松弛度数组

    Slack[maxn],当一个点扩展路径不成功时,松弛数组改变,改变的原则是每次求出不在交叉树中的最小slack,然后对被访问的lylx进行更新,找扩展路径是,是当两点权值之和等于边权时找,否则修改

    Slack

    题目:hdu 租房分配

    2-sat问题

    这个问题其实就是&|xoror问题,根据条件建边,求强连通,找矛盾

    2-sat中最重要的还是在不矛盾时找出匹配,即在每个强连通中去找标记可行的点,并标记已经找过,在求出的多个强连通中找,直到找全。

    题目:参加宴会问题,婚姻匹配问题

    割点问题:

    也是连通题,当dfn[]<=low[]时,dfn所代表的点是割点,并记录是几个联通分量的割点。Hdu 4005 POJ 2117

    概率题

    看了一些做的有点少,都是简单的

    AC自动机

    原理:就是trie树和fail指针的建立,query时只需要找fail指针指向的点nextcount就行了

    重点fail指针的建立和使用。

  • 相关阅读:
    Lightoj 1023
    Tju 4119. HDFS
    Lightoj 1020
    Lightoj 1019
    小奇挖矿 2(4和7)
    [AHOI2012]树屋阶梯
    漂亮字串
    Prison 监狱
    2-XOR-SAT
    牛宫
  • 原文地址:https://www.cnblogs.com/sdau--codeants/p/3886981.html
Copyright © 2011-2022 走看看