2018 10 3 萬聖節的快遞

2022-05-02 04:09:08 字數 3189 閱讀 6302

[lazyjazz還是小白菜的時候……]

棧就好比乙個垃圾桶…… —— chxer

[今天……]

lazyjazz的1月1日大買特買的訂單今天(11月1日)終於到貨了,演算法(sf)快遞公司把lazyjazz訂單裡所有的快件分到了兩列火車上,一列上午到站,一列下午到站。收到通知的lazyjazz無比激動,開上了他花了半年時間造出的兩輛快件接收車——兩輛卡車各頂著乙個「垃圾桶」,急急忙忙趕往了火車站。

接收快件的流程是這樣的:

上午到站的那列火車(簡稱1號火車,下午到站的簡稱2號火車)裡所有的快件需要先用第一輛快件接收車拉走。2號火車裡所有的快件需要用第二輛快件接收車拉走。

上午,1號火車有 $na$ 節車廂,其中第 $i$ 節車廂內共有 $ka_i$ 個快件排成一排,lazyjazz需要每次需要選擇一節車廂,將其中的全部快件依次拿出,扔進他的第一輛快件接收車的桶裡,直到所有車廂內快件均被取出。

下午,2號火車有 $nb$ 節車廂,其中第 $i$ 節車廂內共有 $kb_i$ 個快件排成一排,lazyjazz同樣需要每次需要選擇一節車廂,將其中的快件全部依次拿出,扔進他的第二輛快件接收車的桶裡,直到所有車廂內快件均被取出。

lazyjazz訂的 $n$ 個快件中,每個快件都有乙個獨一無二的,在$[1,n]$範圍內的編號,在接收結束回到家後,lazyjazz要求他的管家從 $1$ 到 $n$ 按編號掃瞄並記錄每個快件的資訊。

記錄過程是這樣的:

我們先將第一輛快件接收車上的桶命名為1號桶,第二輛快件接收車上的桶命名為2號桶。由於「垃圾桶」與棧的相似性,有乙個機械臂,每次操作可以將乙個桶頂端的快件拿到另乙個桶的頂端,管家需要不斷操作這個機械臂,使得1號桶頂端依次出現編號為 $1$,$2$,$3$ …… $n$ 的快件,並記錄快件資訊。即,先操作機械臂使得1號桶頂放的是1號快件,記錄資訊;然後再操作機械臂使得1號桶頂放的是2號快件,記錄資訊……以此類推。。。

不幸的是,快件運到的時候,每個快件不定被放在哪列車的哪個車廂的哪個位置。好訊息是,我們知道兩列車的每節車廂裡放的快件編號依次是多少。lazyjazz出於人道主義考量,決定找出乙個選擇車廂的順序,使得管家在記錄快件資訊時操作機械臂的操作次數最少。

現在,給你兩列火車每節車廂內的快件排列資訊,你能回答在lazyjazz選擇車廂順序合理的情況下,管家記錄快件時操作機械臂的操作次數最少是多少嗎?

給個例子:

假若一共有 $6$ 個快件

1號火車共有 $1$ 節車廂

第 $1$ 節車廂內快件編號依次為:2-4-3

2號火車共有 $2$ 節車廂

第 $1$ 節車廂內快件編號依次為:1-5

第 $2$ 節車廂內快件編號依次為:6

那麼初始的時候

1號桶從頂到底快件編號只能是:3-4-2(2先拿出來,放在最底下,4第二個拿出來,放在中間,3最後,放在最頂)

2號桶從頂到底快件編號可以是:6-5-1或5-1-6,而5-1-6更優(前者最終需 $15$ 次操作,後者僅需 $13$ 次)

答案為 $13$

操作詳情:

初始狀態下:,

經過$2$次操作:變成,

經過$4$次操作:變成,

經過$2$次操作:變成,

經過$1$次操作:變成,

經過$2$次操作:變成,

經過$2$次操作:變成,{}

總共$13$次操作。

第一行三個非負整數 $n$ 、 $na$ 、 $nb$ ,依次表示快件數,1號火車車廂節數,2號火車車廂節數

接下來 $na$ 行,每行第乙個數為乙個正整數 $ka$ ,緊跟著 $ka$ 個正整數 $a_i$,表示1號火車的一節車廂內有 $ka$ 個快件及其中快件編號的排列

接下來 $nb$ 行,每行第乙個數為乙個正整數 $kb$ ,緊跟著 $kb$ 個正整數 $b_i$,表示2號火車的一節車廂內有 $kb$ 個快件及其中快件編號的排列

其中保證$\sum+\sum=n$,所有 $a_i$ 與 $b_i$ 不重複,且保證 $1 \leq a_i,b_i \leq n$

輸入中乙個快件排列,先出現的編號先被放入接收車,順序不可逆,詳情請參見樣例

乙個整數,表示所有車廂選擇方案中,最終機械臂操作次數最少的操作次數

input

6 1 2

3 2 4 3

2 1 5

1 6

output

13
explanation

該組樣例與題目描述中的例子相同,如有疑問請反觀題目描述

input

10 2 3

3 2 4 9

1 72 8 1

2 3 5

2 10 6

output

42

對於前$10\texttt$的資料:$na,nb \leq 1、n \leq 1000$

對於$10\texttt-30\texttt$的資料:$na,nb \leq 1$

對於$30\texttt-40\texttt$的資料:$na+nb=n$

對於$40\texttt-60\texttt$的資料:$na,nb \leq 6$

對於$60\texttt-80\texttt$的資料:$na,nb \leq 10, n \leq 20$

對於$90\texttt$的資料:$na,nb \leq 15$

對於$100\texttt$的資料:$na,nb \leq 20、n \leq 100000, 1 \leq na+nb \leq n$

保證$\sum+\sum=n$,所有 $a_i$ 與 $b_i$ 不重複,且保證 $1 \leq a_i,b_i \leq n$

時間限制:$2\texttt$

空間限制:$512\texttt$

**,根本看不出來怎麼狀壓dp啊!

我:「這題怎麼d啊?」

自閉的小**:「直接d啊

」我:「我很菜不會啊,怎麼記錄狀態?」

自閉的小**:「直接01記錄啊」

我:「01表示什麼?」

自閉的小**:「車廂取沒取啊」

回去又掃了遍題,聽了一下午,勉強明白。

以上是廢話

30pts:全排列亂搞(你知不知道next_permutation這麼個函式)

70pts:全排列

90pts:狀壓dp

首先想一下,我們是要按編號順序讓快件依次出現在1號棧頂部,會氣泡排序的人應該知道 兩個順序正確的快件的相對位置是不變的。比如:

萬聖節派對

時間限制 1000 ms 記憶體限制 65535kb 難度 1 描述 萬聖節有乙個party,xadillax顯然也要去湊熱鬧了。因為去湊熱鬧的人數非常龐大,幾十w的數量級吧,自然要進場就需要有門票了。很幸運的,xadillax竟然拿到了一張真 門票!這真 門票的排列規則有些奇怪 門票號是由0 6組...

萬聖節派對

門票號是由0 6組成的六位數 0 6這幾個數字可重用 過濾每乙個門票號 第乙個過濾條件 每一位不能有三個連續相同的數字 如123335是不行的 第二個過濾條件 每乙個門票號相鄰的兩位相差必須在四以下 4 如016245是不行的 輸入第一行乙個n,代表輸入個數 接下去n行,每行兩個數字x,y x y ...

萬聖節派對

描述 萬聖節有乙個party,xadillax顯然也要去湊熱鬧了。因為去湊熱鬧的人數非常龐大,幾十w的數量級吧,自然要進場就需要有門票了。很幸運的,xadillax竟然拿到了一張真 門票!這真 門票的排列規則有些奇怪 門票號是由0 6組成的六位數 0 6這幾個數字可重用 每乙個門票號的每一位不能有三...