摘要: 传送门 因为是求路径条数,而k的范围不大,想到用dp转移。 用f[i][j]表示从n到i的距离<=最短距离+j的方案数。 用d[i]表示从i点到n点的最短距离。 对于边<u,v,val> f[u][j]=f[v][j+d[u]-d[v]-val]。 记忆化搜索实现dp过程。 小技巧: 1.搜索时从n 阅读全文
posted @ 2019-08-21 10:43 yyys 阅读(252) 评论(0) 推荐(0)
摘要: 传送门 然鹅我并不觉得这道题很清新rua 思维巧妙!(参考) 对于第k小,我们可以这样考虑,若是第k小,那么比它小的方案应该是有k-1个。 在排列组合中,若固定i放在j位置,方案数是确定的,即:i固定在j位置,满足这个条件的序列的rank是在一个范围内的。 对于逆序对 常见思考方式是从小到大枚举数字 阅读全文
posted @ 2019-08-21 10:43 yyys 阅读(187) 评论(0) 推荐(0)
摘要: 传送门 公式图片来自洛谷题解 因为求V之和与P之和的比值的最大值。这个值不超过200 考虑到二分答案,设ans为最大值,则有 可以看出是01分数规划 那么每次就重新分配边的权值: ans*ci-vi 再判负环,有说明ans不成立,反之成立。 特别提一下:这里判负环是用dfs版的spfa,而不是bfs 阅读全文
posted @ 2019-08-21 10:43 yyys 阅读(169) 评论(0) 推荐(0)
摘要: 传送门 求对于每个点删掉1到他的最短路上的最后一条边(就是这条路径上与他自己相连的那条边)后1到他的最短路的长度。 即:最短路径树:图中的源点到所有结点的最短路径构成的树。 最短路径树在dijkstra过程中就可以求出来,因为这个过程就相当于走一棵树。 然后就是选入杂边,对于一条杂边<u,v>,它加 阅读全文
posted @ 2019-08-21 10:42 yyys 阅读(397) 评论(0) 推荐(0)
摘要: 传送门 主要考察了对Floyd算法的认识程度(告诉我们背板子是不行的)。 Floyd,代码很简单,而其本质思想是通过其他的点进行中转来求的两点之间的最短路。因为我们知道,两点之间有多条路,如果换一条路可以缩短距离的话,就更新最短距离。而它最本质的思想,就是用其他的点进行中转,从而达到求出最短路的目的 阅读全文
posted @ 2019-08-21 10:42 yyys 阅读(237) 评论(0) 推荐(0)
摘要: 模板题传送门 一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图。 朱刘算法用来求最小树形图,复杂度O(nm)。 大概思想就是缩点+贪心加边。 如果图中存在环,就把环缩成一个点,一直到没有环为止。 考虑正确性: 最小树形图和最小生成树的区别就在与有方向,对于一个环,我 阅读全文
posted @ 2019-08-21 10:08 yyys 阅读(1971) 评论(0) 推荐(0)