图论
-
- 正在学
-
最短路树
- 主要解决一些要用到最短路性质或和最短路相关的题
-
Kruskal重构树
- 这个比较简单,但用到了一个把边化为点的思想,这有几条很显然的性质:
- 这是一珂满足大根堆性质的二叉树
- 任意一条路径的最大值为树的LCA
- 这个比较简单,但用到了一个把边化为点的思想,这有几条很显然的性质:
-
树链剖分(就套一套其它数据结构用用吧)
字符串
-
后缀数组
- 主要就体现了一下后缀的思想和处理的技巧
-
后缀树
- 一个利用虚树的性质,配合后缀数组巧妙地建树
-
- SAM = DAWG(直接建) + Parent树(因为各个节点不能相同,所以如果要分裂出去,必须要连边)
- 理解性质较重要(本蒟蒻认为较难理解)
-
字符串hash
-
KMP
- KMR自动机qwq
DP
-
数位dp(ZR mjy小姐姐课程强烈推荐!!)
- 好题:
- hdu4734 F(x)
可以发现虽然A非常大,但是F(A)极度地小,于是设\(dp_{i,j,k} = 到了第i位,当前位数字为j,F值为k的方案数\)
先预处理出dp数组,然后每次询问的时候统计ans就行了
- hdu4734 F(x)
- 好题:
-
装压dp(感觉虽然会,但是用得不太熟)
- 好题:
- Atcoder ARC058 C Iroha and Haiku
这题设dp方程有点妙:设\(dp_{i,S}\)表示到了第i个数,状态为S的方案数
状态为S表示如果是{4},那么二进制倒数第4位为1,二进制为4;如果是{4,2}那么二进制位100010;如果为{4,2,3},那么二进制为100010100,因为x+y+z最多为17,所以二进制不可能超过2^17,最终得出答案(*注:可以dp不可行的方案,然后用\(10^n\)-所有dp[n][i],这样dp写得简单些,顺便吐槽一下,\(vjudge\)的\(latex\)是坏的/fn/fn/fn upd:现在又好了qwq)
- Atcoder ARC058 C Iroha and Haiku
- 好题:
-
期望dp
- 就写过4道题。。。不熟练,大体思想就是具体的求E[X],有时候放到树或图上时,要通过转化使得式子可求
来源:oschina
链接:https://my.oschina.net/u/4395239/blog/4458334