随笔分类 - 搜索
摘要:题目链接 题解 ⭐:若图中边权全部为$1$,BFS即可在$O(n+m)$的时间中求出单源最短路。 BFS+剪枝就可以啦(☆▽☆) BFS:对于每个位置,向上下左右4个方向拓展长度$k$,直接搜索。 剪枝:在拓展过程中(当前拓展到位置$(x,y)\(),只要发现一个无法更新的位置\)(tx,ty)$(
阅读全文
摘要:题目链接 题解 ⭐:在有规律的矩阵中求最大值,可以考虑使用类最短路的搜索。 易得答案为$k$个格子覆盖次数和$\div (n-r+1)^2$,因此只需找出覆盖次数最大的$k$个格子。所以——打表找规律! 格子$(tx,ty)$被覆盖的次数如下:设$x=min(tx,n-tx+1),y=min(ty,
阅读全文
摘要:题目链接 题解 ⭐:①记忆化搜索的时间复杂度为状态数$\times$决策数 ②记忆化搜索(dfs)为博弈论题目常见解法 记忆化搜索,$ans[i][j]\(表示当前轮在点\)(i,j)$上玩家的输/赢(\(0/1\))。只要当前可以转移到的状态中有一个为赢,则当前状态为输(因为玩家极聪明)。Tips
阅读全文
摘要:题目链接 题解 易得为使序列最小,前$k$个经过的点一定都是$a$,而这些经过的点中一些原本即为$a$不用变换,因此用$f$数组记录到点$(i,j)$能经过$a$的最大数量。另设$maxs$表示只经过原本为$a$或变换后为$a$的点的最大步数,如果$f_{i,j}+k$(最大$a$数量)\(=i+j
阅读全文
摘要:题解 由题意得,每一个节点仅经过一条边可以到达的节点一定是递增的。因此可以将bfs序列分成若干个递增序列,然后模拟建树。 AC代码 #include<bits/stdc++.h> using namespace std; const int N=2e5+10; int a[N],len[N]; in
阅读全文

浙公网安备 33010602011771号