<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      loading...

      [AGC043D]Merge Triplets

      AGC 的題都比較有情趣。

      Description

      對于一個長為 \(3n\) 的排列 \(a\),使用其生成等長的排列 \(p\),生成方法如下:

      • \(p\) 初始為空。
      • 將序列 \(a\) 等分成 \(n\) 段,第 \(k(0\le k<n)\) 段包含 \(a_{3k+1},a_{3k+2},a_{3k+3}\)
      • 定義 \(n\) 個指針,初始分別指向每段中的第 \(1\) 個元素,即 \(a_{3k+1}\)
      • 執行若干次下面的操作,直到所有指針均被銷毀:尋找當前所有指針指向元素的最小的一個,將該元素放在 \(p\) 的最后面,并讓指向該元素的指針右移 \(1\),若移出當前所在段,則銷毀該指針。

      求總共能生成出多少不同的 \(p\) 序列,對 \(m\) 取模。

      \(1\le n\le 2000,10^8 \le m \le 10^9+7\)

      Analysis

      一個顯然的思路方向是關心 \(p\) 能否被生成出來。不難發現,如果存在 \(i<j \land p_i > p_j\),那么 \(p_i,p_j\) 必定被分在原序列 \(a\) 的同一段中。

      接下來又發現 \(p_i,p_j\) 必定還滿足相鄰或只隔了一個數(而且隔開的這個數也與他們在同一段內),這是一個必要條件。這個必要條件看上去非常迂蠢,因此找到 \(p\) 的前綴 \(\max\) 數組 \(h\),發現這個條件等價于 \(h\) 中連續段長度不超過 \(3\)

      于是可以先將 \(p\) 的前綴 \(\max\) 數組日出來,分出 \(k\) 個段。

      例如 \([3,1,2,4,6,5]\to[3,3,3,\mid 4 \mid 6, 6]\),構造 \(a=\lang 3, 1,2,4,6,5\rang\) 即可。

      然后列著列著 \([3,1,4,2,6,5] \to [3,3 \mid 4,4 \mid 6,6]\),然后嘗試構造,有這幾條限制,\(3\)\(1\)\(4\)\(2\)\(6\)\(5\) 在同一個三元組中,然后仔細一瞧,喲,似了。由于三元組只有兩個,所以每個二元段都必須要搞出第三個數,然而在該序列中全為 \(2\) 元段,所以搞不出單獨的第三個數。

      所以自然而然地想出 \(p\) 的前綴 \(\max\) 數組 \(k\) 個段中,長度為 \(2\) 的數量必須少于長度為 \(1\) 的數量,不然湊不出來了。

      那么尋求普遍性,是不是所有滿足這個條件的 \(p\) 一定存在一個 \(a\) 與之對應?

      假設 \(s_i=\max\limits_{j\le i}\{p_j\}\)\(k_1\) 個長為 \(1\) 的連續段,\(k_2\) 個長為 \(2\) 的連續段。滿足 \(k_1 \ge k_2\)

      長為 \(3\) 的連續段對構造無影響(直接給它們放一塊就可以聽候安排了),可以不妨設不存在。

      先嘗試著消掉所有 \(2\) 連續段:假如存在一個 \(1\) 連續段排在他前/后,那么就組建一個 \(a\) 中的三元段,讓該 \(2\) 連續段的前/后放上這個孤獨的數。

      剩下的 \(1\) 連續段直接按順序排即可。

      這樣構造的合理性在于,由于是前綴最大值,單調遞增,這樣構造后一定會先將前綴最大值所在組按順序干掉,只需考慮單個三元段中的順序即可。

      Solution

      于是可以使用 \(\rm dp\),令 \(f_{i,j}(i\in[1,3n],j\in[-n,n])\) 為考慮到第 \(i\) 位,限制當前第 \(i\) 位為最后一個前綴 \(\max\) 連續段的末尾,\(1\) 段個數減 \(2\) 段個數為 \(j\) 的方案數。

      轉移

      \[ f_{i,j}\overset{+}{\gets} \begin{cases} f_{i-1,j-1}&l_k=1\\ f_{i-2,j+1}\times(i-1) &l_k=2\\ f_{i-3,j}\times(i-1)\times(i-2) &l_k=3 \end{cases} \]

      \(\mathrm{ans}=\displaystyle\sum_{j\ge0} f_{3n,j}\)

      如果多加仔細觀察的話,會發現此處的轉移之所以如此之簡單,還有一個重要的 \(\rm dp\) 思想,就是由于前面得到的 \(\rm dp\) 值是只考慮到第 \(x\) 位,填的是 \(1 \sim x\) 的數,轉移到當前的第 \(i\) 位,顯然這里也只填從 \(1 \sim i\),當前塊第一個放的一定是 \(i\),第二個和第三個先欽定為 \(i-1,i-2\),再在前面找到數與之交換(也可不交換)由于 \(i-1,i-2\) 均是大于前面的數的,所以對合法性無影響。

      posted @ 2025-05-13 20:49  goldspade  閱讀(12)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲欧洲日产国无高清码图片| 午夜欧美精品久久久久久久| 成人国产av精品免费网| 人妻少妇乱子伦精品| 国产精品一区 在线播放| 国产亚洲AV电影院之毛片| 98精品全国免费观看视频| 67194熟妇人妻欧美日韩| 国产精品爽爽爽一区二区| 40岁大乳的熟妇在线观看| 中文字幕无线码中文字幕免费| 精品人妻中文字幕av| 美女又黄又免费的视频| 日本美女性亚洲精品黄色| 精品乱码一区二区三四五区| 国产中文字幕精品喷潮| 超碰伊人久久大香线蕉综合| 国产欧美日韩视频怡春院| 四虎国产成人永久精品免费| 国产精品久久久久影院老司| 男人天堂亚洲天堂女人天堂 | 国语精品国内自产视频| 少妇大叫太大太爽受不了| 亚洲国产日韩伦中文字幕| 九九在线精品国产| 亚洲综合中文字幕首页| 亚洲精品专区在线观看| 中国老熟妇自拍hd发布| 色综合色综合久久综合频道| 少妇高潮喷水正在播放 | 最新av中文字幕无码专区| 亚洲免费的福利片| 国产精品爽爽va在线观看网站| 全黄h全肉边做边吃奶视频| 精品亚洲男人一区二区三区| 亚洲国产精品午夜福利| 午夜免费国产体验区免费的| 亚洲欧美日本久久网站| 一区二区三区国产偷拍| 在线天堂www在线| 成人免费在线播放av|