退役前的做题记录 Ⅰ

退役前的做题记录 Ⅰ

写一下卡特兰数加强数字敏感度:1 2 5 14 42

持续更新到退役(大概

P6689 序列

第一步发现对于左括号个数相等的结果序列,它们的出现概率也相等,这个是可以轻松 \(n^2\) Dp 出来的。

第二步我们需要求一个左括号个数确定的随机序列的最长合法括号子序列期望长度。

掏出我们的重要结论:左括号为 1,右括号为 -1,设前缀最小值是 \(Smin\),答案就是 \(n-S_n+2\times Smin\)

考虑将相邻的左右括号匹配后消掉会形成这样的:\())))((\),前缀最小值的绝对值就是这样右括号的个数,玩一下发现是对的。

观察发现 \(n-S_n\) 是固定的,我们枚举 \(Smin\) 就可以得到答案了,那么用 \(Smin\le k\) 减去 \(Smin <k\) 的方案数就可以得到恰好的方案了,算小于的方案就相当于算不得碰到某条直线的方案数,应用折线法即可。

P4769 [NOI2018] 冒泡排序

做到上面那题想到这题了。

首先题意可以转化为计数可以分成两个上升序列的排列个数。

这个东西又可以转化为经典的格子走路问题,我们贪心的这样转化:维护两个上升的序列,选出排列的第一个数开头当第一个序列,另一个序列当成开头为 0,每扫到一个数能放第一个序列就放第一个序列,否则放第二个,不能放就说明不合法。

发现这样一件事:第一个序列相邻两个数 \(x,y\),那么 \((x,y)\) 之间的数在第二个序列是连续且上升的,然后就可以看成格子走路了,从 (0, 0) 开始走路,走到 (n, n),只能向上向右走,每个向右拐点代表着第一个序列填了一个 y 座标的数,向右平走表示在第二个序列里填了下一个该填的数(这个数是当前最小的未出现过的正整数),一个限制是我们不可以越过 y = x 这条线。

所以这题也不难了,要求字典序要大于 q,我们就枚举一个前缀和 q 相等的部位,强制下一位大于 q 即可。

P6827 「EZEC-4」括号

这题 160 多个 A 的,出题组 A 了 150 多发真是丧心病狂。

暴力 dp 应该都会,以为有什么高妙的少一维状态,没想到是每次多跳一些。

状压预处理,暴力匹配每次跳一步,预处理以后我们可以一次跳多步,就这样卡过去的???

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章