• 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

  • 相关阅读:
    python之路----初识面向对象(二)
    python之路----初识面向对象
    python之路----包
    python之路----模块与序列化模块
    python之路----模块调用
    python之路----常用模块二
    Python之路----递归函数
    Python之路----内置函数
    【CSS】整屏大背景
    【PHP】打印输出var_dump+echo+print_r
  • 原文地址:https://www.cnblogs.com/BlankAo/p/16092486.html
Copyright © 2020-2023  润新知