2018吉林信息学冬令营day6

居然1个ac。。。100分。。。

先T1

题目大意求一个图是否存在多个拓扑序列。。。。
我c这么简单。。。
看看队列,一次排序之后队列里有好多的话就return false结束。。。
送分大水题、、、
开开心心写一个小时,ac两个样例。。。
放正解:来自讲课的学长zeyu song
“对这个图进行拓扑排序。 如果队列中某个时刻剩余的点数大于 1,此时可以从队列中任取一个点,因此拓扑序不唯一。 只有当队列中任意时刻点数都小于等于时,拓扑序唯一。

然后T2

题目大意:一个图,没事闲的要删点,删点之前还不停地问最短路
我拿到题之后:我c这不就弗洛伊德吗。。。
然后就开始写弗洛伊德
顺序是啥来着
k,i,j是吧
然后就发现咋删点啊
矩阵平移下就可以了
然后开始想平移
想了半天发现需要两个数组
我c
好吧。。。
然后就看bug看了两个小时
然后。。。bug没看出来时间到了
放正解:来自讲课学长zeyu song
“可以将删点过程看成一个反向加点的过程。问题转化为每次加一个点,询问最短路之和。 f [ i][ j][ k表示从 j  k ,只经过加的前 i  个点的最短路。 这其实就是 floyd  的过程,只需将 floyd  中中间点的枚举顺序换成加点的顺序。 用第 i  个加入的点作为中间点更新最短路后,计算前 i  个加入点之间的最短路之和即可。

没有T3

放大意正解
题目大意从1号点出发回到1号点,要求经过的点尽量多,有一次反向的机会(可以不用)
问点的数量。。。
看完第一反应:

不会!!!

还是来自zeyu song的正解:“ 首先将图中的强联通分量用 tarjan  算法缩点。缩点后的图是一张拓扑图。定义缩点后一条路径的权值是这条路径上所有强联通分量的点数之和。最终的路径在缩点后的图中一定可以表示成如下形式: path( bel[1] ; i) > path( j; bel[1]) 其中 path( x; y表示在缩点后的图中从 x  y  的权值最大的路径,且缩点后的图中存在一条从 j  i  的边。 bel[1]  表示  1  所在的强联通分量。 用拓扑图上的 dp  求出 f [ i表示缩点后的图中从 i  bel[1]  的权值最大的路径。将缩点后图中所有边反转,dp  求出 g[ i表示从 i  bel[1]  的权值最大的路径。 g[ i]  即为反转边之前,从  bel[1]   i 的权值最大的路径。 枚举缩点后图中所有边 u > v g[ v] +  f [ u] size[1]  更新答案。 size[1]   1  点所在强联通分量大小。”

总结与反思

图论还是没咋学好
不过第二个ac比较开心啊哈
哈哈哈。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值