做题记录 25.6.20
\(\textcolor{purple}\odot\) CF1730F Almost Sorted
按位置依次填数,令 \(x+1\) 为最小的未填入的数(即 \(1\sim x\) 填入,\(x+1\) 未填入),则所有已经填入的数都 \(\le x+k+1\),且当前填入的数 \(\le x+k+1\),这样可以保证符合限制
令 \(f_{i,S}\) 表示 \(1\sim i\) 都填入,\(i+1\) 未填入,\(i+1\sim i+k+1\) 的填入状态为 \(S\),最小逆序对数
时间复杂度 \(O(n^2+nk2^k)\)
\(\textcolor{purple}\odot\) CF1730E Maximums and Minimums
单调栈预处理左侧第一个 \(\ge a_i\) 的位置 \(pge_i\),右侧第一个 \(>a_i\) 的位置 \(sg_i\),左侧第一个 \(<a_i\) 的位置 \(pl_i\),右侧第一个 \(<a_i\) 的位置 \(sl_i\)
枚举最大值在 \(a_i\),枚举 \(d\mid a_i\)(预处理每个数的因子集合),令 \(l=pge_i+1\),\(r=sg_i-1\),转化为求 \(\sum_{l\le ll\le i\le rr\le r}[\min_{i=ll}^{rr}a_i=d]\)
\(d=a_i\) 的情况特殊处理(容易做到 \(O(n)\))
\(d<a_i\) 时,令 \(L\) 为 \(i\) 左侧第一个 \(d\) 的位置(不存在则为 \(0\)),\(R\) 为 \(i\) 右侧第一个 \(d\) 的位置(不存在则为 \(n+1\))
显然 \(L\ge l\) 且 \(sl_L\ge i\) 时 \([L,i]\) 才合法,\(R\) 同理
当 \([L,i]\) 合法且 \([i,R]\) 合法时,左端点在 \([\max(l,pl_L+1),L]\),右端点在 \([R,\min(r,sl_R-1)]\) 的区间都合法
当 \([L,i]\) 合法(\([i,R]\) 不要求)时,左端点在 \([\max(l,pl_L+1),L]\),右端点在 \([i,\min(r,R-1,sl_L-1)]\) 的区间都合法
\([i,R]\) 同理
总时间复杂度 \(O(V\log V+\sum nd\log n)\),可以做到 \(O(V\log V+\sum nd)\)

浙公网安备 33010602011771号