打表与数形结合

数形结合

把结构用形状表示。

-> 括号串,01 串考虑用折线。反射容斥。
-> 括号匹配用区间树表示。
-> 偏序问题转化到二维平面。
-> 凸轮建模,置换环。
-> 转化为平面上的点

P4375 [USACO18OPEN] Out of Sorts G

简介 01 原理。如果一个过程只与比较相关,那么将其压缩成 01 是没有影响的。
即对于 \(\le x,>x\) 的看做 \(0,1\),在本题中如果对于所有 \(x\) 都把 01 排好序就完成了,求所有 \(x\) 最大代价。
考虑放到二维平面上,将 \(0\) 看做向右走,\(1\) 看做向上走。
那么一轮中的两个操作是:现将 \(1\) 往右边挪到右一个 \(1\) 的位置,再将 \(0\) 往下面挪到下一个 \(0\) 的位置。
可以将两个操作独立。两个操作的次数是相等的,所以我们找 \(1\) 的操作次数和 \(0\) 的操作次数的相等量。
考虑 \(1\sim x\)\(1\) 的数量等于 \(x+1\sim n\)\(0\) 的数量。所以 \(x\) 的答案就是这个,设这个为 \(t\)
\(1\sim x\) 中的 \(t\)\(1\) 全部往右挪,然后跟 \(x+1\sim n\) 中的 \(0\) 一起向下挪,就排好了。答案为 \(\max t\)

ARC150E Weathercock

考虑将 L 看成 -1,R 看成 1,然后画一个折线图出来。观察操作后折线会产生什么变化。
先考虑 \(k=1\),钦定 \(s_n\ge 0\)。那么对于 L 翻转的条件是其 \(\ge 0\),R 翻转的条件是其 \(>s_n\)
那么对于 \(\ge s_n\) 的可以直接翻下去。对于 \(0\sim s_n\) 的 L 需要翻转。
不难发现此时 \(s_n\) 一定变成了最大,且以后一定也是一直是最大的。所以之后不会有 R 翻转。
所以现在考虑 L 的翻转。发现若一个位置前面存在 \(s_i>0\) 那么就会一直有 L 翻转,使当前位置翻转。
考虑 R 翻转下来是否还会翻转回去。因为 \(s_n\ge 0\),所以 R 前面是一定有 \(s_i>0\) 所以一定会翻转回去。
\(k\) 的话考虑每个 \(i\) 具体分析即可。

P9338 [JOISC 2023] Chorus (Day3)

照例将 A 看做是 1,B 看作是 -1。考虑如何刻画题目所给出的条件。
发现一个子序列可以对应一个峰,因为峰的两侧高度相同可以随意插入也就是形成任意的子序列。
那么子序列问题转化为了划分区间问题。考虑将一个区间变为只有一个峰的代价是多少。
这个计算还是挺简单的,然后设 \(f_{i,j}\) 表示前 \(i\) 个划分了 \(j\) 个峰出来的代价。非常典的模型。
考虑将 \(j\) 用 wqs 二分消掉,剩下的用斜率优化处理一下。

gym102978E

。。

打表

打表也是一种数形结合,把不知道的抽象性质转化为可以观察的性质。

-> 找到答案的结构与性质。
-> 如果一个可能对的必要条件,打表找到反例或证明其是正确的。
-> 打表构造一种的方案。

qoj # 9785. Shrooks

posted @ 2025-02-05 18:45  s1monG  阅读(23)  评论(0)    收藏  举报