随笔分类 - 图论——最短路
1
摘要:"传送门" $PEWDSVTS$ 我哪根筋不对了要把所有可行的拿出来$sort$一下……还有忘开$long\ long$真的好难受…… $RANDGAME$ 首先奇数是必赢的,偶数的话考虑把它写成$2^k\times w$的形式,如果$k$是偶数必赢,否则必输。直接归纳法就可以证了。然后奇数的情况判
阅读全文
摘要:题面 "传送门" 题解 以所有的感兴趣的城市为起点,我们正着和反着各跑一边多源最短路。记$c_{0/1,i}$分别表示正图/反图中离$i$最近的起点,那么对于每条边$(u,v,w)$,如果$c_{0,u}\neq c_{1,v}$,那么我们就用$d_{0,u}+d_{1,v}+w$更新答案 cpp
阅读全文
摘要:题面 "传送门" 题解 首先,我们把串反过来,那么前缀就变成后缀,建一个$SAM$。我们发现一个节点的后缀是它的所有祖先 那么我们是不是直接按着$parent$树建边就可以了呢? 显然不是。我们假设在$SAM$的某个节点上同时存在某个$a_i$和$b_j$且$|b_j| |a_i|$,$b_j$不是
阅读全文
摘要:题面 "传送门" 题解 如果暴力的话,我们可以把所有的二元组全都扔进一个队列里,然后每次往两边更新同色点,这样的话复杂度是$O(m^2)$ 怎么优化呢? 对于一个同色联通块,如果它是一个二分图,我们只要保留一棵生成树就够了。否则我们对其中任意一个点连一个自环 为什么呢?因为如果是二分图,重复走可以改
阅读全文
摘要:"传送门" $A\ Regular\ Triangle$ 咕咕 $B\ Red\ or\ Blue$ 咕咕咕 $C\ Snuke\ the\ Wizard$ 我可能脑子真的坏掉了…… 容易发现不管怎么移动相对顺序都是不变的,那么我们二分找到最右边的会从左边掉出去的点,它左边所有点也会从左边掉出去,最
阅读全文
摘要:题面 "传送门" 题解 我们把字符的出现次数哈希起来,然后把每个点向能在它之后的点连边。那么这显然是一个$DAG$,直接求最长路就行了
阅读全文
摘要:题面 题解 考场上蠢了……这么简单的东西都想不到…… 首先排序加去重。 先来考虑一下,形如 $$a_1x_1+a_2x_2+...a_nx_n=w,a_1 define R register define ll long long define inf 0x3f3f3f3f define fp(i,
阅读全文
摘要:Description 给定一个n个点、m条边的带权无向图,其中有s个点是加油站。 每辆车都有一个油量上限b,即每次行走距离不能超过b,但在加油站可以补满。 q次询问,每次给出x,y,b,表示出发点是x,终点是y,油量上限为b,且保证x点和y点都是加油站,请回答能否从x走到y。 Input 第一行包
阅读全文
摘要:"传送门" 首先跑一遍最短路,如果一条边满足$dis[v]=dis[u]+w[i]$,那么这条边就在最短路中,把它加进网络流的图里 然后点的流量限制的话拆点,把每个点拆成两个,中间连边来限制流量 最后跑一遍最大流即可,注意两张图不要弄混掉,还有要开$long\ long$,$inf$也要大一点 以上
阅读全文
摘要:"传送门" 完全看不出这思路是怎么来的…… 首先对于两个亲戚,他们监视范围的边界是他们连线的中垂线。那么对于一个亲戚来说它能监视的范围就是所有的中垂线形成的半平面交 然后如果某两个亲戚的监视范围有公共边,那么就在这两个亲戚之间连一条边,如果某个亲戚的监视范围和矩阵边界有公共边,那么就把这个亲戚和终点
阅读全文
摘要:"传送门" 我数学可能白学了…… 因为三个数加起来等于$1$,那么只要用前两个数就能表示,那么就能把每一种金属看成一个二维向量。考虑只有两个向量的时候,设这两个向量为$a,b$,那么一个向量$c$能被表示也就是说存在$ax+by=c$且$x+y=1$,根据数学老师说的那么$c$在$a$和$b$的终点
阅读全文
摘要:传送门 首先,猫的走位太飘了……只能预处理…… 先对每一个点跑一遍dijkstra跑出最短路,然后再预处理出$nxt[i][j]$表示当猫在$i$老鼠在$j$时猫下一步会走到哪里 然后考虑dp,设$dp[i][j]$表示猫在$i$老鼠在$j$时猫抓到老鼠的期望步数是多少 如果$i==j$,那么$dp
阅读全文
摘要:传送门 我的floyd竟然写错了?今年NOIP怕不是要爆零了? 这就是一个概率dp 我们用$dp[i][j][k]$表示在第$i$个时间段,已经申请了$j$次,$k$表示本次换或不换,然后直接暴力转移 点数只有300,跑一遍floyd
阅读全文
摘要:传送门 早上模拟赛考这题,结果竟然看错题目了orz 然后下午看完题解自己做的时候空间开小了白WA了好久orz 首先,如果以$S$为起点,一条边$(u,v)$在最短路上,则$dis[u]+edge[i]=dis[v]$ 那么我们先以每个点为起点跑一遍最短路 每一次跑完最短路,对于一条边$i$,考虑它的
阅读全文
摘要:传送门 这最短路的建图怎么和网络流一样玄学…… 一个最朴素的想法是从每一个点向它能到达的所有点连边,边权为跳的次数,然后跑最短路(然而边数是$O(n^2)$除非自创复杂度比spfa和dijkstra还有优秀的做法否则根本过不了) 那么考虑一下分块 把每一座建筑拆成$O(\sqrt{n})$层,第$i
阅读全文
摘要:传送门 前置技能,克鲁斯卡尔重构树 我们按道路的高度建一个最大生成树,然后建好克鲁斯卡尔重构树 那么我们需要知道一颗子树内到1点距离最近是多少(除此之外到子树内任何一个点都不需要代价) 可以一开始直接跑一个dijkstra(关于SPFA,他死了) 然后一遍树形dp就可以了
阅读全文
摘要:传送门 完了我好像连分层图最短路都不会了……果然还是太菜了…… 具体来说就是记录一个步数表示免费了几条边,在dijkstra的时候以步数为第一关键字,距离为第二关键字。枚举边的时候分别枚举免不免费下一条边。然后其他基本就和普通的dijkstra一样了 据说这题卡spfa,特意把刚写好的spfa给改了
阅读全文
摘要:题目描述 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间。 Elaxia和w**每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提下,一起走的时间尽可能的长。 现在已知的是Elaxia和w**所在的宿舍和实验室的编号
阅读全文
摘要:传送门 说好的网络流24题呢……上次是状压dp,这次怎么又最短路了…… 不过倒是用这题好好学了一下分层图最短路 把每一个位置$(x,y)$,油量剩余$k$表示为一个状态,然后转化成一个$n$进制数,这样每一个状态都可以唯一表示。能互相转移的状态之间连有向边,然后跑一个最短路就行了 具体细节看代码好了
阅读全文
摘要:题目大意 给定一张$n$个点, $m$条边的无向图,求$S$ 到$T$的最短路,其中边权都是$2^k$的形式$n,m,k<=10^5$,结果对$10^9+7$取模 题解 大佬好厉害 跑一边dijstra大家应该都想的到 但问题是维护最短路的距离怎么实现 我太菜了除了python啥都想不到 我们可以把
阅读全文
1

浙公网安备 33010602011771号