摘要:"原题链接" 这题可以用爆搜或高斯消元,这里我用的是高斯消元。 对于题目中的样例: 我们可以将其转化为如下的方程组: $\begin{cases} A + B = E + k_1 \\ B + D = B + k_2 \\ C + A = B + k_3 \\ E + C = A + k_4 \\
阅读全文
摘要:"原题链接" 终究还是逃不过这题,真的懒得写爆搜。。 在某一行中填数时,可以使用链表以减少无用的遍历,即防止遍历到在该行已经填过的数字。 再开$3$个数组,一个记录改格是否填过数,一个记录这一列中哪些数已经存在,一个记录这个格子所在的九宫格里哪些数已经存在。 对于转成九宫格的下标,其实是有公式的,不
阅读全文
摘要:"原题链接" 爆搜题。 有个很显然的贪心,就是第$i$轮扩展肯定是删去$i$到$i + 1$层上的某一条边。 另外,贪心地删除含子节点最多的点是错误的,比如一条很长的链和一个比链节点少一点但是全部分布在一层,这样就是错误的。 所以我们爆搜的枚举删去这一层的哪个点,并累加上以该点为根的子树大小,然后继
阅读全文
摘要:"原题链接" 原本以为要剪枝剪半天的一道题,结果因为数据实在是太水,裸的爆搜就能过了。。 刚打算写个$HASH$去重,结果看时间不够就随便交一发,然后就$A$了。。(捂脸 爆搜就直接搜每个点在哪个矩阵里,同时更新答案即可。 ~~因为过了,所以就懒得写剪枝和去重了~~ cpp include usin
阅读全文
摘要:"原题链接" 爆搜面值,$DP$判断就好。 一开始打了记搜,结果连$5\ 5$的数据都过不去。。最后还是老老实实写了$DP$,不过还是跑不过$7\ 5$的数据,但因为这题数据极水,所以轻松过了。 我也去网上翻了翻,目前没有发现哪份代码能真正过满数据,所以就懒得改了。~~反正能$A$~~ cpp in
阅读全文
摘要:"原题链接" 爆搜题。 先用线性筛预处理出素数,并直接暴力循环预处理出那些数和哪些数之间能拼成素数,当然可以再疯狂点,直接预处理出每两个数可以和哪些数拼成素数(反正$n$小,随你预处理)。 然后爆搜的时候注意搜索顺序,先搜第一行第一列,以保证第一行第一列之和最小。 然而普通的搜索顺序搜除去第一行第一
阅读全文
摘要:"原题链接" 显然要先把较大的盘放到目标位置。 有一个很明显的贪心方案: 设当前要把第$x$大的盘子从$A$移到$B$,则先把比$x$小的盘子全部移到$C$柱,再将第$x$大的盘子移到$B$柱,这样递归求解。 该种贪心方案在大多数情况都是最优的,但是有个大佬出了一个$HACK$数据,将该贪心方案$H
阅读全文
摘要:"原题链接" 挺水的一道题。 $DFS$枚举被删除的砝码,每次删完后进行$01$背包计数,取最大值即可。 这题不需要剪枝即可通过。 我这里是用链表储存的数据。 cpp include include include using namespace std; const int N = 25; con
阅读全文
摘要:"原题链接" ~~讨厌这种大搜索题~~ 基本就是模拟搜索,注意细节即可。 以下是我用的两个剪枝: 1. 将块向左移的前提是左边为空,因为该题要求先右后左,所以若左边有块,那么在上一次搜索向右移的时候一定会搜过,且字典序更小。 2. 对每次搜索的图进行$HASH$储存,即记忆化。 表示这题把我$HAS
阅读全文
摘要:"原题链接" 对于第一个问题,显然$DFS$或$BFS$一遍看看最后一排是不是全部被搜到即可。 对于第二个问题,考虑贪心,求出第一排每个格子最大能够覆盖多少最后一排的格子,即求左端右端(显然覆盖的格子都是连续的,若不为连续,则那个断开的格子定无法到达)。 可以使用$DP$来求出,设$L[x][y],
阅读全文
摘要:"原题链接" 爆搜水题,数据小,连剪枝也不用。 对于每个油滴,扩展的最大半径即是对圆心到$x$边界的距离、圆心到$y$边界的距离、与每个已经扩展的油滴圆心距离减去该油滴扩展的半径 取最小值,注意对$0$取$max$。 cpp include include using namespace std;
阅读全文
摘要:"原题链接" 模板题。 由于此题特殊,边权均为$1$,所以可以直接跑$BFS$,每个点的最短路就是该点在$BFS$搜索树中的深度,某个点的最短路计数则用上一层中能到达该点的计数来更新即可。 cpp include using namespace std; const int N = 1e6 + 10
阅读全文
摘要:"原题链接" 这题我是用了个玄学的$dfs$剪枝跑过,如果要看正解状压$DP$,可以移步机房大佬的博客( "传送门" ) 关于剪枝,具体的直接在代码里说吧。 cpp include include include using namespace std; const int N = 20; int
阅读全文
摘要:"原题链接" 第一眼还以为是贪心,然后随便找了几组例子瞬间推翻贪心的想法。发现$n\leqslant18$,显然是用爆搜+剪枝。 爆搜主体我是对小猫进行枚举,判断增添缆车,其实这是一个比较慢的搜法,而另一个更快的搜法是通过枚举缆车,这样只要剪一点枝即可过,而我用的方法则需要更多剪枝才可过。 1. 显
阅读全文