随笔分类 - 图论 最短路
摘要:【题目】 " 6354. 「CodePlus 2018 4 月赛」最短路" 【题意】给定n个点,m条带权有向边,任意两个点i和j还可以花费(i xor j) C到达(C是给定的常数),求A到B的最短距离。$n \leq 10^5,m \leq 5 10^5$。 【算法】异或优化建图+Dijkstra
阅读全文
摘要:【题目】E. Logical Expression 【题意】令x=11110000(2),y=11001100(2),z=10101010(2),n次询问,每次要求用[与][或][非][括号]构成含至多各1个xyz的表达式使得结果等于给定的数字(0~255),要求表达式最短(一样短时字典序最小)。n
阅读全文
摘要:【题目】D. Flights for Regular Customers 【题意】给定n个点m条边的有向图,每条边有di表示在经过该边前必须先经过di条边,边可重复经过,求1到n的最小经过边数。n,m<=150,di<=10^9,time=4s。 【算法】floyd+矩阵快速幂 【题解】需要计算步数
阅读全文
摘要:【题意】求一个k的倍数使其数位和最小,输出数位和,k<=10^5。 【算法】最短路 【题解】考虑极端情况数字是可能爆long long的(例如k*num=100...000),所以确定基本方向是依次考虑答案x的每个数位。 考虑x初始是1~9,每次在后面加一位,就有x*10+0~9十种操作。 但是x可
阅读全文
摘要:【题意】给定无向图,距离定义为边权和+最大点权,询问若干个两点最短距离。n<=250。 【算法】排序+floyd 【题解】考虑floyd的过程是每次找一个中转点,为了在当前找到一条新路径时方便地统计路径上的最大点权: 对点权进行排序,按点权从小到大的顺序枚举中转点,这样最大点权一定是i,j,k三点中
阅读全文
摘要:【题意】给定n个点的图,正权无向边,正负权有向边,保证对有向边(u,v),v无法到达u,求起点出发到达所有点的最短距离。 【算法】拓扑排序+dijkstra 【题解】因为有负权边,直接对原图进行spfa,加slf优化后可过,但是这道题就没意思了。 理论上,最短路问题用spfa是不能保证复杂度的,但d
阅读全文
摘要:【题意】给定按编号顺序站成一排的牛,给定一些约束条件如两牛距离不小于或不大于某个值,求1和n的最大距离。无解输出-1,无穷解输出-2。 【算法】差分约束+最短路 【题解】图中有三个约束条件,依次分析: ①坐标顺序和编号顺序一致【一定一定要记得这个约束条件】 xi-xi-1>=0 i向-1连边0 ②两
阅读全文
摘要:【题意】给定n头牛和m对大小关系,求最坏情况下至少还需要比较几对奶牛的大小(在未确定顺序的奶牛对中随机比较) 【算法】floyd求传递闭包 【题解】可达说明大小已知,则不可达点对数量就是最少比较次数。 使用bitset优化传递闭包,复杂度O(n^3 /32)。 #include<cstdio> #i
阅读全文
摘要:【题意】给定有向图,边严格从大编号指向小编号,求前k短路。n<=1000,m<=10000,k<=100。 【算法】归并+拓扑排序||A*求第k短路 【题解】因为此题自带拓扑序的特殊性,可以用归并写。 f[i][j]表示从i出发的第j短路,将i出去的点的前k短路依次归并。 复杂度O(m*k)。 #i
阅读全文
摘要:【题意】给定m条边的无向图,起点s,终点t,要求找出s到t恰好经过n条边的最短路径。n<=10^6,m<=100。 【算法】floyd+矩阵快速幂 【题解】 先对点离散化,得到点数N。 对初始边建立初始矩阵,然后考虑每次多跑一条边相当于一次矩阵乘法,即c[i][j]=min(a[i][k],a[k]
阅读全文
摘要:【算法】图论,最短路? 【题意】原图为无向连通图,现给定原图的最短路矩阵,求原图最小边权和,n<=300。 【题解】要求最小边权和下,原图的所有边一定是所连两端点的最短路。 那么现在将所有最短路作为边加入原图,考虑删边。 对于(u,v),若存在点w使得(u,v)=(u,w)+(w,v),则(u,v)
阅读全文
摘要:【算法】最短路树+(树链剖分+线段树)||最短路树+并查集 【题解】 两种方法的思想是一样的,首先题目限制了最短路树唯一。 那么建出最短路树后,就是询问对于每个点断掉父边后重新找路径的最小值,其它路径只能是这个点和其子树节点通过非树边到达非子树节点。 这样考虑很难统计,换个角度考虑每条非树边的影响。
阅读全文
摘要:【算法】01分数规划-最优比率环 【题意】给定有向图,点有收益,边有代价,重复经过的话收益不叠加而代价叠加,求从任意点开始最后回归该点的(收益/代价)最大。 【题解】 和普通的分数规划不同,这里的方案选择必须是一个环。首先有一个重要的结论:答案一定是一个简单环。 (简单证明:假设当前复杂环为两个简单
阅读全文
摘要:【算法】分层图最短路 【题解】 考虑k层一模一样的图,然后每个夹层都在每条边的位置新加从上一层跨越到下一层的边权为0的边,这样至多选择k条边置为0。 然后考虑方便的写法。 SPFA 第一次SPFA计算常规最短路(顶层)。 之后k次SPFA,松弛操作加上可以从上一层节点直接获取最短路(即相当于省一条边
阅读全文
摘要:【题意】求DAG上最多的点使得互不可达。 【算法】floyd+最大匹配 【题解】 链是DAG上的一个点集,集合内的点相互单向可达。 反链是DAG上的一个点集,集合内的点相互不可达。 题目显然是求最长反链,转化为最小链覆盖。 最小链覆盖只要求可达,最小路径覆盖却要求相连。 所以floyd传递闭包(用f
阅读全文
摘要:【第一题】 题意: 给一个 01 串设为其 S,询问是否存在只出现两次的 01 串 T。 这里的出现定义为存在一串下标 ,满足 且 。 2≤n≤5000,数据随机。 题解: 很容易想到部分分算法DFS枚举子集。 由于数据随机,n>10时大概率存在,直接输出。 #include<cstdio> #in
阅读全文
摘要:【算法】期望DP+floyd 【题解】用floyd预处理最短距离。 注意重边与自环——图论双毒!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! QAQ 然后搞清楚方案和概率的问题,我们DP是要决策最优方案。 f[i][j][0~1]表示前i个,剩余j份申请资格,当前第i个是否
阅读全文
摘要:【算法】二分+spfa 【题解】据说这个叫分数规划? 0-1分数规划 二分答案a,则对于任意的环有w/k≤a即w-ak≤0,若满足条件则a变小,否则a变大。 因为w=w1+w2+...+wk,所以变形为(w1-a)+(w2-a)+...+(wk-a)≤0。于是问题转化为在图中找负环。 不过由于spf
阅读全文
摘要:【网络流与二分图】专题链接 【图论】 图论-刘汝佳 完全三部图:图G可被分为三个顶点集,点集内的点相互均没有连边,不同点集的点之间相互均有连边。完全三部图的三元环个数是三点集点数的乘积。 无向无环图就是树。有向无环图DAG方便操作。 有环图可以tarjan缩点。 哈密顿回路(路径):每个点只经过一次
阅读全文
摘要:【算法】最短路(floyd)+状态压缩型动态规划 【题解】 经典的TSP问题(货郎担问题):求最小权哈密顿回路(遍历全图点一次且仅一次)。本题稍作改动,先说原TSP问题解法:状压DP。 状态用二进制表示每个点是否走过(状态也包括最后走的点),状态转移关键在于每个点都有且只有另一个点指向它,所以先可以
阅读全文