日记12(网络流看题总结)

本文总结了网络流的建模方法,包括最大流与最小割建模的区别及应用场景,并探讨了AC自动机的基本原理及其与KMP算法的相似之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     今天一直是在看网络流的题和网络流的建模方法,从昨天的了解一点网络流的皮毛,到现在已经对网络流的解题方法有一定的感觉了。但一定还是比较模糊,不够熟练。

     基本都是围绕大佬Edelweiss神的《网络流建模汇总》pdf来看的这里面写的建模方法技巧非常详细,很是神奇,期间有些定义等理论知识和一定算法要看Amber的《最小割模型在信息学竞赛中的应用 》pdf,大约网络流的建模分为最大流的建模,最小割的建模,有上下界的最大流建模,最小费用的建模。

    其中着重看了最大流建模和最小割建模,这两种是对偶的关系,在看题目问法和答案的时候就能看出来,一般,最大流是跑完代码就是答案,而采用最小割,需要用总体减去这割去的部分。但有的问题问的是最少增加的什么,等等,答案出来就是最小割了。按照上面说,当最大流模型是边,在最小割模型中就是点,这个估计需要对相同类型的问题,分别用最大流,最小割做一遍,就会又更深理解,但我还没看到这样两种题目。最小费用的建模,按照Edelweiss神说,没有一套通用的方法,但我看了感觉和前两种差不多,不过加了费用的权值限制。

    我看了这些题,感觉到,建模可以从很多方面入手,比如,我昨天看的按照流平衡来理解建模。其实还有串一边题意当作一条增广路的建模方法,比如,足球比赛的题,有i场比赛,j个队伍,要求第支队伍必须胜场最多,我们就可以这样像,第i场比赛有两个队伍比,第j个队伍胜利了,然后胜场数加一或者加分,获得一个增广路增加的流,这样把所有的比赛都建成一个图,每场比赛和s相连,每只队伍就和t点相连,这样再加上限制条件,就建图成功。还可以把集合分成两类,s集,t集,这应该算是最小割的建模法吧,反正能做出题就是好方法,找出s集到t集的一种关系,进行连线构图,就是一个建图方法。其实建图的时候还可以这样考虑,把s点和供应方(只是一种理解方法)相连,作为一种物品或分数或抽象物的供应方,t点和需求方相连,无论它需求什么,一般可以在s点和供应方的边容量是供应数的限制,而t和需求方是需求数的限制,当然不是每道题都有,而供应方和需求方之间的连线往往是题目中给的很多限制条件或必须的供需方。

    当然,建图的方法有很多,完全靠我们的思维和脑洞大开,我感觉,这类题目一定要在题目中的各色各样的条件中理清思路,这样才能把每个条件分配好位置,要不然脑子里乱哄哄一片,什么图也想不起来。

    昨天还打了cf,让我知道很多做过的题的改编也是很可怕的,昨天的cf让我感觉就是经典题目的改编,一个括号匹配问题,加上一个问好,这个题就变了,虽然还可以和以前做过的一道括号匹配问题有类似的解法,但模拟不全的话,是很难ac的。

    今天中午没睡觉,哎其实中午没怎么睡过,还不如干一些事情那,因为我字典树,kmp都看过,虽然没做过题,但也看过几道,就学习了一下ac自动机的知识点和模板,感觉ac自动机的原理和kmp非常相似,明白了kmp,里ac自动机也就不远了,感觉这就是在字典树上的kmp算法,虽然原理很容易懂,但是代码不是那么好理解,因为大部分人都是用的数组模拟队列来写的,看起来不是很习惯,如果是有一个用队列写的代码,那么对照例题看起来应该会比较轻松了,然后再对照队列写法的代码理解优化过的代码,我感觉如果这样做会比较轻松的掌握好ac自动机的模板,至于题目,我不看都知道有很多,我也就不看了,我也只是理解一下知识,以后有时间就把ac自动机的题目给补上,掌握它。



   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值