T1:
题意:
给定两个字符串,可以改变任意K个字符,求出最长的公共子串。
题解:
暴力枚举两个串的起始位置,暴力匹配,失配字符超过K个时跳出即可。
时间复杂度$O(N^3)$
T2:
题意:
给一张无向图,求出不经过同一个点的长度为3的路径个数。
题解:
考虑容斥,先暴力DP所有方案,然后去除不合法方案。
不合法方案有:两个点之间来回走,三个点之间来回走,三元环。
两个点之间来回走方案数为:
$sum_{i=1}^n du[i]$
三个点之间来回走方案数为:
$2*sum_{i=1}^n A_{du[i]}^2$
三元环可以用bitset记录连边,然后暴力找。
时间复杂度$O(frac{N^3}{32})$
T3:
题意:
给一张有向图,每个点有一个权值,每个点都能到达权值为它的权值的子集的点,求一号点到所有点的最短距离。
优化建图,将每个点和它的权值连边,每个权值向它去掉一个1后的点连边。
每个点进入权值的边权为0,出来的边权为1,不然会错。
然后边权只有0或1,、双端队列BFS即可。
时间复杂度$O(N+M+2^K)$