FFT版子题
时间分块。
用dfs序+划分树预处理,然后考虑修改对询问的影响。
动态规划。
考虑列的顺序对答案没有影响,设 f[i][j][k] f [ i ] [ j ] [ k ] 表示DP到了第 i i 行, j j 列0个棋子, k k 列 1 1 个棋子,分类讨论转移即可。
轮廓线动态规划。
记录轮廓线,每次转移枚举选或不选。
贪心。
考虑最优的方案一定是在lca处让两个叶子节点距离相等。树上贪心即可。
(这种题是怎么评上提高+/省选-的啊,QAQ)
单调栈。
考虑棋盘只有两种情况
将第一种格子赋为1,第二种为0。查询最大的全1矩阵或全0矩阵。用单调栈优化到 O(nm) O ( n m ) 。
树形DP.
设 f[i][j] f [ i ] [ j ] 表示以 i i 为根的子树中满足 j j 个客户需求的最小收益,直接转移即可。
斜率优化DP.
设 f[i] f [ i ] 表示处理前 i i 个货物的最少时间。
斜率优化即可。
斜率优化DP.
展开方差公式发现有些为常量,只考虑变量。
动态规划.
考虑三个点 A(x,y),B(x1,y1),C(x1,y2)(x>x1,y>y1>y2) A ( x , y ) , B ( x 1 , y 1 ) , C ( x 1 , y 2 ) ( x > x 1 , y > y 1 > y 2 )
A−>B−>C:(x−x1)2+(y−y1)2+(y1−y2)2 A − > B − > C : ( x − x 1 ) 2 + ( y − y 1 ) 2 + ( y 1 − y 2 ) 2
A−>C:(x1−x1)2+(y−y2)2 A − > C : ( x 1 − x 1 ) 2 + ( y − y 2 ) 2
因为 (y−y1)2+(y1−y2)2<((y−y1)+(y1−y2))2 ( y − y 1 ) 2 + ( y 1 − y 2 ) 2 < ( ( y − y 1 ) + ( y 1 − y 2 ) ) 2
所以第一种转移更优。
所以每次转移时转移每一列最下面的点即可。
树哈希.
用换根DP求出A树中以每个点为根的哈希值与B树中去掉某个叶子节点的哈希值,MAP判重即可。
斜率优化DP.
考虑顺序不影响答案,推完DP方程后斜率优化即可。
斜率优化DP.
考虑每次要么卖出所有股票要么花光所有钱,列出方程后CDQ分治+斜率优化即可。
斜率优化DP.
二分+主席树.
对于每个询问二分答案 k k ,比 k k 小的设为 −1 − 1 ,大于等于 k k 则设为 1 1 ,判断能否使区间和 ≥0 ≥ 0 .
考虑按照大小顺序构建二分时的 (1,−1) ( 1 , − 1 ) 序列,那么每次只会修改一个位置,主席树维护即可。
DP+容斥.
g[k][i][j] g [ k ] [ i ] [ j ] 第 k k 种颜色棋子恰好填满 i i 行 j j 列的方案数
f[k][i][j] f [ k ] [ i ] [ j ] 前 k k 种颜色棋子恰好填满 i i 行 j j 列的方案数
斜率优化DP.
设 sum[i] s u m [ i ] 表示深度大于 i i 的节点数.
发现这是一条直线,斜率优化即可。
数论。
稍微分析可以发现
注意精度问题。
Trie树。
按照题意模拟,为每个节点建立go
指针,当当前为字符串结尾或下一字符为/
时尝试跳转。
按秩合并并查集。
考虑撤销操作:
Tarjan+DP。
考虑依赖关系类似于一棵树,Tarjan缩点后DP即可。