一句话题解整理

Solution

Luogu3803

FFT版子题

Luogu2137

时间分块。

用dfs序+划分树预处理,然后考虑修改对询问的影响。

Luogu2051

动态规划。

考虑列的顺序对答案没有影响,设 f [ i ] [ j ] [ k ] 表示DP到了第 i 行, j 列0个棋子, k 1 个棋子,分类讨论转移即可。

Luogu1879

轮廓线动态规划。

记录轮廓线,每次转移枚举选或不选。

Luogu1131

贪心。

考虑最优的方案一定是在lca处让两个叶子节点距离相等。树上贪心即可。

(这种题是怎么评上提高+/省选-的啊,QAQ)

Luogu1169

单调栈。

考虑棋盘只有两种情况

  1. 黑格行列奇偶不同,白格不同
  2. 白格行列奇偶相同,黑格不同

将第一种格子赋为1,第二种为0。查询最大的全1矩阵或全0矩阵。用单调栈优化到 O ( n m )

Luogu1273

树形DP.

f [ i ] [ j ] 表示以 i 为根的子树中满足 j 个客户需求的最小收益,直接转移即可。

Luogu2365

斜率优化DP.

f [ i ] 表示处理前 i 个货物的最少时间。

f [ i ] = m i n { f [ j ] + s u m T [ i ] × ( s u m C [ i ] s u m C [ j ] ) + S × ( s u m C [ n ] s u m C [ j ] ) }

f [ j ] = ( S + s u m T [ i ] ) × s u m C [ j ] + f [ i ] s u m T [ i ] × s u m C [ i ] S × s u m C [ n ]

斜率优化即可。

Luogu4072

斜率优化DP.

展开方差公式发现有些为常量,只考虑变量。

f i , j = { f i 1 , j + ( s i s j ) 2 }

f i 1 , j + s j 2 = 2 s j s j + f i , j s i 2

Luogu4056

动态规划.

考虑三个点 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 x 1 ) 2 + ( y y 1 ) 2 + ( y 1 y 2 ) 2

A > C : ( x 1 x 1 ) 2 + ( y y 2 ) 2

因为 ( y y 1 ) 2 + ( y 1 y 2 ) 2 < ( ( y y 1 ) + ( y 1 y 2 ) ) 2
所以第一种转移更优。

所以每次转移时转移每一列最下面的点即可。

Luogu4323

树哈希.

用换根DP求出A树中以每个点为根的哈希值与B树中去掉某个叶子节点的哈希值,MAP判重即可。

Luogu3648

斜率优化DP.

考虑顺序不影响答案,推完DP方程后斜率优化即可。

Luogu4027

斜率优化DP.

考虑每次要么卖出所有股票要么花光所有钱,列出方程后CDQ分治+斜率优化即可。

Luogu3628

斜率优化DP.

f i = m a x { f j + a ( s i s j ) 2 + b ( s i s j ) + c }

f i + 2 a s i s j a s i 2 b s i c = f j + a s j 2 b s j

Luogu2839

二分+主席树.

对于每个询问二分答案 k ,比 k 小的设为 1 ,大于等于 k 则设为 1 ,判断能否使区间和 0 .

考虑按照大小顺序构建二分时的 ( 1 , 1 ) 序列,那么每次只会修改一个位置,主席树维护即可。

Luogu2839

DP+容斥.

g [ k ] [ i ] [ j ] k 种颜色棋子恰好填满 i j 列的方案数

g [ k ] [ i ] [ j ] = C i j k x = 1 i y = 1 j g [ k ] [ i ] [ j ] × C i x × C j y

f [ k ] [ i ] [ j ] k 种颜色棋子恰好填满 i j 列的方案数

f [ k ] [ i ] [ j ] = x = 0 i 1 y = 0 j 1 f [ k 1 ] [ i x ] [ j y ] × C i x × C j y

Luogu3571

斜率优化DP.

s u m [ i ] 表示深度大于 i 的节点数.

a n s [ k ] = m a x ( i + s u m [ i ] k )

发现这是一条直线,斜率优化即可。

UOJ12

数论。

稍微分析可以发现

  1. a = g , b = l 时,答案取最大值。
  2. a = b = n 时,答案取最小值。

注意精度问题。

UOJ13

Trie树。

按照题意模拟,为每个节点建立go指针,当当前为字符串结尾或下一字符为/时尝试跳转。

UOJ14

按秩合并并查集。

考虑撤销操作:

  1. 上一次操作为加边,则直接删除即可
  2. 上一次操作为删边,那么相当于没有删边,上一次操作答案判断删除 k 条边后是否仍然存在生成树。

Luogu2515

Tarjan+DP。

考虑依赖关系类似于一棵树,Tarjan缩点后DP即可。

猜你喜欢

转载自blog.csdn.net/DSL_HN_2002/article/details/82120755