02 2024 档案
摘要:part1:具体实现 流程可以看 这里 part2:时间/空间 复杂度分析: 时间复杂度:考虑一个点什么时候会对 dp 产生贡献,以一条链为单位,这一条链对 dp 有贡献,只有在这条链作为轻链“接入”另一条链的时候,而它作为轻链只有一种情况。所以一条链只会被计算 1 次,所有的链恰好可以覆盖
阅读全文
摘要:方法1:类似 LCA,每次倍增地往上跳即可。 Code: int fa[N][21],dep[N]; void dfs_lca(int u,int father){ dep[u]=dep[father]+1; fa[u][0]=father; for(int i=1;(1<<i)<=dep[u];i
阅读全文
摘要:part1 费用流建图 比较显然,把车的数量当成流量,把捡到的石头数量当成费用。然后跑最大费用最大流。 因为费用是针对点而不是边,所以要拆点,每个点分为入点和出点。 对于向下走,向右走建边:从起点的出点向终点的入点连边,容量为 inf,费用为 0。 对于每一个格子,如果当前格子是石头
阅读全文
摘要:因为最后要找的是“腾出空位”的最小代价。 所以不妨把“障碍的移动”转化为“空位的移动”。 令 fx,y 为:使得 (x,y) 为空,至少需要多少代价。 下面来找转移方程,显然转移方程与空格子移动有关。所以观察空格子移动的规律。 若当前格子 (x,y) 为 L。 以 \(
阅读全文