杂题总结 Vol.2
\(\def\EZ{\textcolor{#51af44}{\text{EZ}}}\EZ\) 表示简单,10分钟内就能想到。
\(\def\HD{\textcolor{#3173b3}{\text{HD}}}\HD\) 表示中等,能独立想出
\(\def\IN{\textcolor{#be2d23}{\text{IN}}}\IN\) 表示困难,独立思考能想到 \(50\%\) 以上
\(\def\AT{\textcolor{#383838}{\text{AT}}}\AT\) 表示非常困难,独立思考只能想出 \(50\%\) 以下
UVA437 The Tower of Babylon
\(\EZ\)
-
性质观察
-
对于两个姿态,他们的比较是严格弱序的
-
一个方块不可能被放置两次 \(\implies\) 答案最大是 \(n\le 30\)
-
-
方案生成
-
方法一:排序之后直接 dp,相当于求出 topo 序然后 dp
-
方法二:其实方法一等价于求最长路,用 bellman-ford 算法求最长路即可,代码好写。
-
-
拓展:最长路
我们经常见到的问题,其实是说,在带权图 \(G\) 上,求出 \(S\to T\) 的最短路径(注意,不要求是简单路径),如果有负权环,给出无解。
现在考虑,如果保证图 \(G\) 没有负权环,要求最短的一条简单路径呢?
这也很容易,因为在没有负权环的情况下,没有必要重复走一个点,如果出现了需要重复走一个点的情况,则必然说明存在负权环,这与题设矛盾。用 Bellman-ford 或是 SPFA 可以解决(需要注意的是 SPFA 并不是会生成重复访问某一个点的路径,它只是避免由于两条岔路结果后面有个负权边这种会导致贪心错误的情况,会用实际上更优的岔路替换另一条)。
那么考虑一个问题,如果去掉 \(G\) 没有负权环的限制呢?
还是给出无解?不行,因为此时即使是负权环,你也得选一边走,是转不起来的。
这个问题是 NP-Hard 的。最长路问题同理。
P10655 [ROI 2017 Day 2] 反物质
\(\HD^+\)
这个题把我给绕进去了,本来以为很麻烦,结果探索了半天没找到有什么性质,结果其实没有什么性质,只是 dp。
应该考虑清楚,答案是怎么贡献的,这个很重要
普通的搜索常常在叶子上统计答案,这要求方案的答案对总答案的贡献要容易计算,然而,本题中,若干结果可能来自同一个实验,也可能是不同实验的,互相之间有影响。
对于每一次实验,产生若干结果,那么对于一次实验,最坏情况应该在结果中取一个最终答案最小的,这是不可控的部分。对于可控的,就是每次可以选择做什么实验,这个是可以自己选的,所以要取 max。就好像实验员和反物质博弈,实验员想让最后结果最大,反物质要使得最后结果最小,这个博弈的结果就是答案。
如果这么想了,那么得到转移方程就非常容易,这个优化也比较平凡。
直接开
std::deque
的空间复杂度尚未证明。如果最后被卡掉了,那么这个题目的难度肯定要加大,因为否则就要用单调栈+并查集的离线 RMQ 做法LCA 的 Tarjan 算法是本算法在 +-1 RMQ 上的特例
- UVA-116 (vjudge.net) \(\EZ\) 要最小化字典序,可以倒着来 dp