摘要: 这个可以爆搜,如果搜出来环的话就一定不合法. 这个时间复杂度是 $O(n^4)$ 的. 但是我们发现,如果向右侧搜的话右侧许多方块会把很多状态都提前搜出来了. 所以我们可以从左向右枚举,搜左面.从右向左枚举,搜右面. 这样时间复杂度就是 $O(n^3)$ 的了. code: #include <bi 阅读全文
posted @ 2020-03-12 23:58 EM-LGH 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个数列,单点修改,求大于 $b_{i}$ 的极大连通块数目. 有一个常见的套路:考虑 $i$ 与 $i-1$. 当新加入 $i$ 时,$1$ ~ $a[i]$ 部分都新加入了一个连通块,然后我们发现我们多加了 $1$ ~ $min(a[i-1],a[i])$ 这一部分. 那么这就对应了一 阅读全文
posted @ 2020-03-12 23:15 EM-LGH 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 这道题拿左偏树做的话时间复杂度好像是 $O(n \log n)$ 的,拿 $Splay$ 的话就是 $O(n \log^2 n)$ 的. $Splay$ 真恶心,真心不好写,要不是可以练习代码能力的话我才不用 $Splay$. code: #include <bits/stdc++.h> #defi 阅读全文
posted @ 2020-03-12 21:59 EM-LGH 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 这个题求完斯坦纳树后再搞一个类似于子集 DP 就行了. 我写的好像有点麻烦,但本质是相同的. code: #include <bits/stdc++.h> #define N 3006 #define M 13 #define inf 0x3f3f3f3f #define ll long long 阅读全文
posted @ 2020-03-12 20:28 EM-LGH 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 这个其实就是状压DP+spfa. 本题需要输出方案,有一点点麻烦 code: #include <bits/stdc++.h> #define ll long long #define N 12 #define inf 0x3f3f3f3f #define setIO(s) freopen(s".i 阅读全文
posted @ 2020-03-12 19:26 EM-LGH 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 这道题和网络收费那道题的套路是一样的. 都是直接枚举每一个点的状态. 但是要注意:这里枚举每个点的状态是基于 dfs 的,所以有递归式:$f(T)=4\times f(\frac{T}{2})$ (算两次) 那么就有 $f(ROOT)=4^n$. 这个是仅考虑 dfs 部分的复杂度,要是把背包部分算 阅读全文
posted @ 2020-03-12 00:35 EM-LGH 阅读(148) 评论(0) 推荐(0) 编辑