首页 > 其他分享 >AGC043D

AGC043D

时间:2024-08-31 08:53:12浏览次数:8  
标签:绑定 个数 AGC043D 构造 升序 序列

如何判定结果序列能否构造出来。不太好直接想出来,先考虑构造过程会有什么性质。
对于一个栈,我们发现只需要关心其相对大小关系。

  1. \(*<<\) 这个时候相当于归并
  2. \(*><\) 这个时候发现如果取出第一个数,那么接着取出第二个数,等价于将第一个数和第二个数绑定,然后变成 \(*<\) 或者继续变成 \(*\)。\(<><\)同理,变成 \(*<\)。
  3. \(*>>\) 变成 \(*\)。

而归并得到的实际上是升序序列,如果出现突然下降,说明绑定出现了。而实际上所有的绑定是容易找出的。非前缀最大值的部分就是绑定。

而一个栈根据上面的分析,能给出 \(3\) 个 \(0\) 绑定;\(1\) 个 \(2\) 绑定;\(1\) 个 \(0\) 绑定和 \(1\) 个 \(1\) 绑定。

发现只要满足 \(1\) 绑定个数不大于 \(0\) 绑定个数即可。

\(f_{i,j}\) 表示考虑了 \(i\) 个数,\(0\) 绑定个数 \(-1\) 绑定个数 \(=j\)。枚举接下来是那个绑定。复杂度为 \(O(n^2)\).

标签:绑定,个数,AGC043D,构造,升序,序列
From: https://www.cnblogs.com/1l2u3o/p/18389818

相关文章