Graph Rush

都是冷门知识点,没用的。。

虚树

P4103 [HEOI2014]大工程

https://www.luogu.com.cn/problem/P4103

板子题。板子即可。

P4426 [HNOI/AHOI2018]毒瘤

https://www.luogu.com.cn/problem/P4426

待填 到时候问 lyc

分层图

诀窍: \(nK\) 很小。

P4822 [BJWC2012]冻结

https://www.luogu.com.cn/problem/P4822

显然

P3119 - [USACO15JAN]Grass Cownoisseur G

https://www.luogu.com.cn/problem/P3119

x -> y
x+n -> y+n
x -> y+n

矩阵加速图

https://www.luogu.com.cn/blog/xiaoziyaoxzy/ju-zhen-jia-su-tu-shang-wen-ti-xue-xi-bi-ji

矩阵 \(^k\)\((i,j)\) 位置,代表 \(i\)\(k\) 步数到达 \(j\) 的方案数。

P2151 - [SDOI2009]HH去散步

https://www.luogu.com.cn/problem/P2151

有一个限制是:不能走上一步走过的边。

考虑把边化成点。两个新点,有连边,当且仅当,第一个边的终点,连向,第二个边的起点。

比如一个图,原图为:1<-->2<-->3。那么自己画一下就明白了。

那么限制就会让 \((x,y)\to (y,x),(y,x)\to (x,y)\) 的两条边删除。

然后裸奔矩阵加速图,即可(注意,由于点化边,所以 \(t\) 变成 \(t-1\)).

CF576D - Flights for Regular Customers

https://www.luogu.com.cn/problem/CF576D

首先对边排序,然后从小到大依次加入每条边。

考虑只有当前存在的边时,答案怎么求。

我们有一个 01 矩阵,代表 \(u\) 能否到达 \(v\)

那么如果上一次的边时间为 \(t_0\),这一次要枚举边 \(t\)。那么就相当于将矩阵再做 \(t-t_0\) 次幂。

然后我们就知道哪些点可以到达了。

于是 bfs 求最短路,如果可以到达 \(n\),那么答案就是 \(t+d_n\)

注意矩阵乘法要用 bItSeT 优化。

P2886 - [USACO07NOV]Cow Relays G

https://www.luogu.com.cn/problem/P2886

\(dis_{i,j}\)\(i\)\(j\) 最短路。

则 矩阵 \(^k\) 就是 \(i\)\(j\) 转移 \(k\) 次的最短路。而这里的矩阵乘法为:

\[dis'_{i,j}=\min(dis_{i,k}+dis_{j,k}) \]

但是注意,我们每次只能转移一条边,所以枚举顺序为 i,j,k。(而且 \(dis'\) 在当前轮不能用于更新)。

P6772 - [NOI2020] 美食家

https://www.luogu.com.cn/problem/P6772

无趣。

\(m\)\(\to\) 暴力拆边。

最大值 \(\to\) \(dis'_{i,j}=\max(dis_{i,k}+dis_{k,j})\)

额外愉悦值 \(\to\) 每次都只转移 \(t_i-t_{i-1}\) 的时间,然后创造一个新矩阵,它原本的 \(\Large a_{x_i}\) 变为 \(\Large a_{x_i}+y_i\) 这次转移乘上新矩阵。\(\to\) 二进制分组优化。

具体实现:

因为我们只用求 \(1\) 开始的路,所以 \(A_i\) 为一个 \(1\times n\) 的矩阵。动态乘就好了,这样乘一次的时间复杂度为 \(O(n^2)\)

2 - SaT

你还记得吗?

念一遍: \(col_A>col_{\neg A}\)\(A\) 为真。真的大才是大的真。

UPD:求 2-SAT 方案数是 「世界难题(maybe NPC)」!

闲着没事做做语文阅读理解:https://www.luogu.com.cn/training/20236#problems

AT2336 - [ARC069D] Flags

https://www.luogu.com.cn/problem/AT2336

二分+线段树优化建图。水题一个。

UPD:写假了!不能写动态开点,因为这样就会无法区分相同值的位置!比如:

2
1 2
2 3

然而 too lazy to modi

P6965 - [NEERC2016]Binary Code

https://www.luogu.com.cn/problem/P6965

把一个串的两种情况都插入到 AC 自动机中。

一个串的字典树(不是 fail 树)对应的结束节点,下面的点,都是它排斥的点。

然后暴力将字典树上的点串起来就好了?值得一写。

出题人没有把这个搬到 AC 自动机上,或者搬到 后缀自动机 上,或者搬到 仙人掌 上,真是 Too Young Too Simple。

CF1215F - Radio Stations

https://www.luogu.com.cn/problem/CF1215F

前缀优化建图。

最后一个条件相当于对于一个点 \(f\)\(f\) 就是区间交点)

  • \([1,l_i-1]\)\(f\)\(i\) 不能选。
  • \([1,r_i]\) 没有 \(f\)\(i\) 不能选。

然后搞就行了。

差分约束

你不记得了!

考虑若干限制 \(x_i-x_j\le c_k\),变形 \(x_i\le x_j+c_k\),相当于最短路(让 \(x_i\) 越小越好)。

还有,\(x_i-x_j\ge c_k\) 变形 \(x_i\ge x_j+c_k\),最长路。

所以连边 \(j\to i:c_k\) 即可。

同理地:

\(x_i-x_j\ge c_k\to x_j-x_i\le -c_k\)

\(x_i-x_j= c_k\to x_i -x_j \le c_k\ \and\ x_i-x_j\ge c_k\)

\(x_i-x_j<c_k\to x_i-x_j\le c_k-1\)

但是,如果图不连通怎么办。于是我们强制地新建一个 \(x_{n+1}\),向所有点连一个 0 边。硬点所有线性相关顺藤摸瓜到的生芽种子都相同(也就是说,如果 \(x_1\to x_2\to x_3,x_4\to x_5\),那就硬点 \(x_1=x_4\))。

判断负环:

SPFA 所有点入队 \(n\) 次后 break。如果还满足 \(dis_i\ge dis_j+w\) 即可以松弛,则有负环。

P2294 - [HNOI2005]狡猾的商人

https://www.luogu.com.cn/problem/P2294

化为前缀和,=

P2474 - [SCOI2008]天平

https://www.luogu.com.cn/problem/P2474

我感觉这不像是差分约束。。。

https://www.luogu.com.cn/blog/80049/solution-p2474

P4926 - [1007]倍杀测量者

https://www.luogu.com.cn/problem/P4926

除法转化成 \(\log\) 下的减法。

晚上做一下带权 Binary 和 CDQ 吧…………T T

posted @ 2022-04-02 15:51  BlankAo  阅读(24)  评论(0编辑  收藏  举报