2025.4.2 数形结合 & 思维方法选讲
4.2 数形结合 & 思维方法选讲
A - 合唱
考虑第 \([l,r]\) 个 A 一定匹配第 \([l,r]\) 个 B,于是 \(g(l,r)=\sum max(0,b_i-l)\)
C - [CF1637H] Minimize Inversions Number
选择 1 个元素,逆序对减少 \(w_i=\sum\limits_{j=1}^{i-1}[p_j>p_i]-\sum\limits_{j=1}^{i-1}[p_j<p_i]\)。
选择多个下标 \(a_1,a_2,\dots,a_k\),\(\sum w_{a_i}+{k\choose 2}-2{\rm inv}(p_{a_1},p_{a_2},\dots,p_{a_k})\)
到这里,我们无法确定选哪些数。
随机排列打表发现,i+1 的方案是从 i 的方案扩展的。
也就是说,我们理应可以单独维护加入每个 \(a_i\) 的代价。
发现一件事情:对于极小逆序对 \((i,j)\),选 \(j\) 一定不劣。
证明考虑在二维平面上逆序点对的变化。
所以如果选 \(i\),那么它后面比它小的数一定都选了,这样就可以拆贡献:
\(f_i=w_i-2\sum\limits_{j=i+1}^n [p_j<p_i]\)
\(w_i,f_i\) 都可以 $O(n\log n) $ 预处理。
贪心的按 \(f_i\) 从大到小选即可。
G - [CF2023F] Hills and Pits
- 单组怎么做?
- 固定起点,终点?
- 上界?\(2n\)
子问题:\(1\to n\)
发现前缀和 \(s_i<0\) 的位置都需要回头,\(ans=n-1+2\sum[s_i<0]\)
原问题:\(s\to t\)(不妨 \(s<t\))
先 \(s\to l \to s\),再 \(s\to t\),最后 \(t\to r\to t\)。
两头是容易的,中间就是子问题。
\(ans=2(r-l)+\sum\limits_{i\in[s,t]} [s_i\ge s_l]\cdot(-1)+\sum\limits_{i\in[s,t]} [s_i<s_l]\cdot 1\)
于是相当于求最小子段和。
按 \(s_l\) 从小到大扫描线,线段树维护 \(\pm 1\) 序列最小子段和。
I - [Luogu 10197] Minimum Sum of Maximums
经典题,到处都讲过。
转化:\(\max(a_i,a_{i+1})=\frac{a_i+a_{i+1}+|a_i-a_{i+1}|}{2}\)
子问题:固定 \(L,R\),重排序列 \(a\) (不妨 \(L\le R\))
结论:\(L,a_1\le a_2 \dots \le a_n,R\)
\(ans=|L-a_1|+a_n-a_1+|R-a_n|\)
\(a_1\) 增加,\(a_n\) 减小一定不劣,故值域区间要么相离要么包含,考虑在值域上 dp 分配。
设 \(f(l,r,S)\) 表示 \([l,r]\) 区间分配了 \(S\) 集合。
\(f(l,r,S)\leftarrow f(l,k,T)+f(k+1,r,S - T)\)
\(f(l,r,S)\leftarrow f(l+1,r-1,S-{i})+calc(l,r,i)\)
\(f(l,r,S)\leftarrow f(l+1,r,S),f(l,r-1,S)\)
复杂度 \(O(3^kn^2)\)

浙公网安备 33010602011771号