日记(周六&&差分约束)

61 篇文章 1 订阅

    昨天看的博客其实也是最短路相关的东西,上次没有看完那些博客,又看了一下,然后又研究复习,学习了差分约束。我理解的差分约束就是有很多变量x1,x2,x3。。。xn。他们之间有很多限制条件,我们就是根据这些限制条件来建边,解题。一般有x(n)-x(n-1)<=w。一般不会直接给出这种公式,有些需要自己去推倒。如果是这样的公式,一般求最大值,可以通过数学知识知道要想算出值,需要找到另一个x(n-1)来抵消-x(n-1)这样依次递推下去,这样感觉就像是再x(n)到x(n-1)之间连了一条边,从x(n)走到了x(n-1),那么要求是最大值,怎么走才是最大那,当然是取最大值的时候,就是边权为w的时候。如果要求x(n)到x1的最大值的话,那么就是求x(n)到x1的连边,而且x(n)-x(n-1)<=w变为x(n)<=x(n-1)+w,这个和最短路松弛操作类似,如果跑完最短路,d(n)有值的话,那么,就是有一个最大值,满足限制条件,完成松弛。如果没有值,那么就是这个图不连通,那么就需要进行一下操作,建立的图可能不联通,我们只需要加入一个超级源点,比如说求取最长路时图不联通的话,我们只需要加入一个点S,对其他的每个点建立一条权值为0的边图就联通了。既然说到这里,无论是最短路还是最长路,都会存在环,这样的话,就不会存在所谓的最大最小值了,那么就需要判环,用spfa即可,n个点中如果同一个点入队超过n次,那么即存在环。

    当x(n)-x(n-1)>=w的话,那么就是相反的,可以把最短路的松弛操作x(n)<=x(n-1)+w,改一下,就变成(n)>=x(n-1)+w,然后求最长路就行了。

    在差分约束中,有些方程需要转化。

    1.X[n-1]-X[0]>=T ,可以进行移项转化为: X[0]-X[n-1]<=-T。
    2.X[n-1]-X[0]<T, 可以转化为X[n-1]-X[0]<=T-1。

    3.X[n-1]-X[0]=T,可以转化为X[n-1]-X[0]<=T&&X[n-1]-X[0]>=T,再利用前两条进行转化即可。

    有很多类似的不等式,都可以类比的转化。其他的操作就是最短路了。

    晚上还参加了一个网络比赛,当然是比较水,做了两个题就完了,第二道题还让我多知道了一个排序的知识,用sort函数的cmp进行自定义排序的时候,如果用引用,可以大大减少排序所花费的时间,在这里TLE了不知多少次。

    今天参加了长沙理工的校赛,咳咳,说起校赛,当然是比较水,但是我们队还是比较弱的。其他队最多的9道题。正常8道题,我们7道题。那是因为有一道超暴力bfs,让我们写超时了,比较尴尬。这个就不说了,不想提起这个往事了。听他们说有一道数学题(组合)是原题,直接贴上就行了,可惜我们没什么感觉。我推了推也不得其所,当然最后发现是一道卡塔兰数的变形题,还是比较简单的。总结来看,我还是去做简单图论题去吧。这次比赛有一道网络流的题。开场一会儿,让我当成一道暴力拓扑排序的变形,去打了出来,结果TLE了,其实我应该做想一想,TLE的原因就是有一种情况不好解决,我用暴力解决的。但是放到网络流上,这就不是什么问题了,但是在拓扑排序算法上,还是比较麻烦的。看来自己网络流还是没理解到位,这次的这道题,还是一道比较好做的最小割的问题,除了和s,t相连的边是1.其他的边都是无穷,保证了割边位置,最小割=最大流=互相联系的一些点的数量。最大流可以很好的解决,存在偏序关系的人的最大数量,n-sum,当然就是没有偏序关系的人的最大数量。还是要多看看网络流的博客,连这么简单的网络流都没看出来。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值