【题解】Solution Set - 「蓝」题板刷

【题解】Solution Set - 「蓝」题板刷

始于:2024/9/1

(其实之前大概做了十来道,但是没有记录。


估计题会比较多,如果从代码里面过来的话,建议直接 Ctrl/⌘+F 题目名称。


【模板】左偏树/可并堆

2024/8/31

打的两只 \(\log\) 的做法,左偏树还待学习。


「USACO18JAN」MooTube G

2024/9/1

一句话题意:https://www.luogu.com/discuss/125319

给定一棵有边权的树,每次询问 \((x,k)\),距离大于等于 \(k\) 的有多少个

机翻?看不懂一点。


我们先把大于等于 \(k\) 的边拎出来,然后每个点的答案就是当前联通块的大小 \(- 1\)

考虑离线,从大到小加边,dsu 维护联通块就做完了。


「TJOI2011」卡片

2024/9/1

感觉有点像二分图的感觉。

暴力连边,跑 dinic 的时间复杂度是 \(O(Tn^\frac 52)\)。然后 T 飞了。

瓶颈是边数。两个点连边,其实就是这两个数存在公因数。考虑每个数向其质因数(虚点)连边,这样边数就缩减到 \(O(n \log V)\) 级别。整体 \(O(Tn^\frac 32\log V)\),能通过此题。


「CSP-S2019」Emiya 家今天的饭

2024/9/9

\(f_{i,j}\):在前 \(i\) 种烹饪方式中选取 \(j\) 个的方案数。(不考虑第三条限制。

有转移:

\[f_{i,j}=f_{i-1,j}+f_{i-1,j-1}\times \sum_{k=1}^m a_{i,k} \]

考虑减去不满足第三条限制的方案。

我们枚举这个食材。

\(g_{i,j}\):对于食材 \(i\)\(j\) 种烹饪方式,选取了至少 \(\left\lfloor\dfrac n2\right\rfloor\) 个当前食材的方案数。

有转移:

\[g_{i,j}=g_{i-1,j} \]


「SDOI2008」 Sue 的小球

2024/9/15

很典的费用提前计算的问题。最开始的模板问题应当是:关路灯


区间 dp。

\(f_{i,j,0/1}\):收集完 \([i,j]\) 范围内的彩蛋停在 \(i/j\),对于所有的彩蛋的最小损失时间。

那么答案就应该是 \(\sum y-f_{1,n}\)


「HAOI2006」数字序列

2024/9/15

考虑一个最 naive 的 dp。

\(f_{i,j}\):前 \(i\) 个末尾为 \(j\) 的最小修改次数。

\[f_{i,j}=\min_{k=-n}^{j-1}f_{i-1,j}+[j\ne a_i] \]

所以说,相当于每求一个前缀最小值,然后全局 \(+1\),再单点 \(-1\)

注意到,区间加一实际上是不会影响前缀最小值。

所以第一问是好做的。


第二问好难。。。

33min passed...


好神奇的一题。

https://www.luogu.com.cn/article/ddzz3syq

主要是要想到下面这两点:

  1. 最少修改的点转化为最多不修改的点。(我之前那个 ds 优化就不太好拉取方案,但是现在这个就很好做。

  2. 对于两个保留点之间的点 \(i,j\),也就是需要被改到值域在 \([a_i,a_j]\) 内。一个结论:

    存在一个断点 \(k\),使得 \([i+1,k]\) 改成 \(a_i\) 同时 \([k+1,j+1]\) 改成 \(a_j\) 是不劣于最优解的。

  1. 第一个算是一种套路吧。
  2. 第二个应该就需要一点感性感知。

注意:

posted @ 2024-09-01 16:38  CloudWings  阅读(17)  评论(0编辑  收藏  举报