摘要:
DFA: 存储一个字符串的所有子串。 阅读全文
摘要:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int N = 1e5 + 10, INF = 1e9; int n, m, delta; 阅读全文
摘要:
splay、treap、set、红黑树、avl、B树 splay: 平衡二叉树,经过左旋和右旋操作,不会改变中序遍历的顺序。维护的是二叉树的一个中序序列,同时调整树的高度。 右旋要变的信息: 在插入和查询操作x的时候,都会把x变到树根的位置。 核心:每操作一个节点,均将该节点旋转到树根。一个点用到的 阅读全文
摘要:
【2488. 树套树-简单版】 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <set> using namespace std; const int N = 5e4 + 阅读全文
摘要:
分析: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; const int N = 100010; int row[N], col[N], s[N 阅读全文
摘要:
求一个括号序列的合法子串个数 dp[i]表示以i结尾的合法的括号序列个数 维护一个栈,左括号push他的位置到栈中,右括号取出栈顶 dp[i] = dp[sta[top] - 1] + 1 然后对dp数组求和 int sta[MAXN * 10], top, ans[MAXN * 10]; ll A 阅读全文
摘要:
动态规划(DP,Dynamic Programming) 一、状态表示(f[i][j]表示什么?): 1、集合:所有只考虑前 i 个物品,且总体积不超过 j 的选法的集合。 2、属性:最大值(Max),还有最小值(Min),方案数。 二、状态计算(f[i][j]怎么算出来?): 1、所有不选第 i 阅读全文