cf vp

1112 div1

\(C\) 忘记了用连通块 刻画连续段 ,没想到点边容斥

\(F\) 中 \(i \in 0,2\^x-1,popcount_k(i)\) 构成的字符串具有倍增的递推关系。

A. Rank Subsequence

给定长度为 \(n\) 的序列 \(a\)。其中第 \(i\) 个元素在子序列中时,满足子序列中在其之前的元素个数不属于 \(l_i,r_i\),子序列中在其之后的元素个数不属于 \(u_i,v_i\)。求最长子序列长度。

\(1 \le \sum n \le 5 \times 10^3,2s,256MB\)。


1

定义 \(f_{i,j}\) 表示考虑前 \(i\) 个元素子序列长度为 \(j\) 是否可行。

发现无法转移,因为不知道后面有多少元素。所以从大到小枚举子序列长度 \(len\),然后再 \(dp\)。

时间复杂度 \(O(n^3)\)。

2

套路地,考虑转 \(01\) 为最值 。具体地,注意到 \(f_i\) 中有值部分是一个前缀 ,所以改变状态,定义 \(f_i\) 表示有值前缀的右端点。状态优化成 \(O(n)\)。

注意到只有 \(f_i\) 处的转移有效,所以转移也优化成 \(O(n)\)。

时间复杂度 \(O(n^2)\)。

B. Permutation Cuts

对一个 \(n\) 阶排列 \(p\),\(\forall i \in 1,n-1,a_i = \min(\max_{j \le i}\{p_j\},\max_{j \ge i+1}\{p_j\})\)。

现在给定 \(a\),求有多少种合法的 \(n\) 阶排列 \(p\)。

\(2 \le \sum n \le 10^6,4s,256MB\)。


1

定义 \(pm_i = \max_{j \le i}\{p_j\},sm_i = \max_{j \ge i}\{p_j\}\)。

考察一个 \(a_i\) 对 \(p\) 的限制。相当于 \(sm_{i+1} \gt pm_i = a_i\) 或者 \(pm_i \gt sm_{i+1} = a_i\)。

考察 \(a_i = v\) 的 \(i\) 构成的集合 \(g_1,g_2,\cdots,g_n\)。

当 \(v\) 放在 \(g_i+1,g_{i+1}\) 时,你发现 \(g_i\) 要求 \(pm_{g_i} \gt v\),但是 \(g_{i+1}\) 要求 \(pm_{g_{i+1}} = v\),矛盾。

所以 \(v\) 只能位于 \(1,g_1\) 或者 \(g_n+1,n\)。以 \(v\) 在 \(1,g_1\) 为例,发现限制最强的是 \(g_n\),即要求 \(sm_{g_n+1} \gt pm_{g_n} = v\)。

相关推荐
hansang_IR5 个月前
【记录】AT_abc406模拟赛
c++·算法·模拟赛
hansang_IR6 个月前
【记录】AT_abc400模拟赛
c++·算法·模拟赛
_yuen2 年前
高一下三调模拟赛5.13(附关于二分图匈牙利建边的详细思考)
图论·二分图·匈牙利算法·模拟赛
xrlong2 年前
2024初三集训模拟测试1
模拟赛