晚餐佇列安排

2021-07-03 03:17:14 字數 944 閱讀 8912

時間限制: 1 sec  

記憶體限制: 64 mb

為了避免餐廳過分擁擠,fj要求奶牛們分2批就餐。每天晚飯前,奶牛們都會在餐廳前排隊入內,按fj的設想,所有第2批就餐的奶牛排在隊尾,隊伍的前半部分則由設定為第1批就餐的奶牛佔據。由於奶牛們不理解fj的安排,晚飯前的排隊成了乙個**煩。 第i頭奶牛有一張標明她用餐批次d_i(1 <= d_i <= 2)的卡片。雖然所有n(1 <= n <= 30,000)頭奶牛排成了很整齊的隊伍,但誰都看得出來,卡片上的號碼是完全雜亂無章的。 在若干次混亂的重新排隊後,fj找到了一種簡單些的方法:奶牛們不動,他沿著隊伍從頭到尾走一遍,把那些他認為排錯隊的奶牛卡片上的編號改掉,最終得到乙個他想要的每個組中的奶牛都站在一起的佇列,例如112222或111122。有的時候,fj會把整個佇列弄得只有1組奶牛(比方說,1111或222)。 你也曉得,fj是個很懶的人。他想知道,如果他想達到目的,那麼他最少得改多少頭奶牛卡片上的編號。所有奶牛在fj改卡片編號的時候,都不會挪位置。

* 第1行: 1個整數:n * 第2..n+1行: 第i+1行是1個整數,為第i頭奶牛的用餐批次d_i

* 一行: 輸出1個整數,為fj最少要改幾頭奶牛卡片上的編號,才能讓編號變成他設想中的樣子。

72111221

2輸入說明:一共有7頭奶牛,其中有3頭奶牛原來被設定為第二批用餐。

輸出說明:fj選擇改第1頭和最後1頭奶牛卡片上的編號。

lis變形。。

ac**:

#include#include#includeusing namespace std;

int a[30003],stack[30003];

int find(int r,int k)

else

}return l;

}int main()

{ int n,i,j,k;

scanf("%d",&n);

for(i=0,k=0;i

晚餐佇列安排

時限 1000ms 記憶體限制 65536k 總時限 3000ms 描述 為了避免餐廳過分擁擠,fj要求奶牛們分2批就餐。每天晚飯前,奶牛們都 會在餐廳前排隊入內,按fj的設想,所有第2批就餐的奶牛排在隊尾,隊伍的前 半部分則由設定為第1批就餐的奶牛佔據。由於奶牛們不理解fj的安排,晚飯前 的排隊成...

晚餐佇列安排 (麻煩的聚餐)

為了避免餐廳過分擁擠,fj要求奶牛們分 33 批就餐。每天晚飯前,奶牛們都會在餐廳前排隊入內,按fj的設想,所有第 33 批就餐的奶牛排在隊尾,隊伍的 前端由設定為第1批就餐的奶牛佔據,中間的位置就歸第 22 批就餐的奶牛了。由於奶牛們不理解fj的安排,晚飯前的排隊成了乙個 煩。第 ii 頭奶牛有一...

P2837 晚餐佇列安排

此題可能用動規不太好做,主要是狀態轉移方程很難想個人認為,思維發散的大佬們忽視。我看了這位大佬的 dp 題解後才想到了方程,在此受我一膜 嗯,說下思路 先用 a i 陣列存一下輸入的編號 然後用二維陣列 dp i 0 1 來表示當前第 i 頭奶牛的編號改成 1 或 2 所用的最少次數 0 表示改成 ...