Jzoj 1247 佇列變換

2021-09-29 11:09:13 字數 710 閱讀 1158

fj打算帶他的n(1 <= n <= 30,000)頭奶牛去參加一年一度的「全美農場主大獎賽」。在這場比賽中,每個參賽者都必須讓他的奶牛排成一列,然後領她們從裁判席前依次走過。

今年,競賽委員會在接受隊伍報名時,採用了一種新的登記規則:他們把所有隊伍中奶牛名字的首字母取出,按它們對應奶牛在隊伍中的次序排成一列(比如說,如果fj帶去的奶牛依次為bessie、sylvia、dora,登記人員就把這支隊伍登記為bsd)。登記結束後,組委會將所有隊伍的登記名稱按字典序公升序排列,就得到了他們的出場順序。

fj最近有一大堆事情,因此他不打算在這個比賽上浪費過多的時間,也就是說,他想盡可能早地出場。於是,他打算把奶牛們預先設計好的隊型重新調整一下。

fj的調整方法是這樣的:每次,他在原來佇列的首端或是尾端牽出一頭奶牛,把她安排到新佇列的尾部,然後對剩餘的奶牛佇列重複以上的操作,直到所有奶牛都被插到了新的佇列裡。這樣得到的佇列,就是fj拉去登記的最終的奶牛佇列。

接下來的事情就交給你了:對於給定的奶牛們的初始位置,計算出按照fj的調整規則所可能得到的字典序最小的佇列。

貪心可以過。判斷左邊和右邊,相等就繼續往裡比。

#include

using

namespace std;

int n;

char s[

30001];

intmain()

return0;

}

bzoj1692 佇列變換

題目鏈結 首先肯定想到貪心,從隊尾和隊首取更小的那個。但是如果遇到隊尾和隊首一樣大的情況呢,總不能再挨個往前比較。所以就把整個字串倒過來再掛到現在字串的後面,也就是把當前字串對稱過去。然後求出字尾陣列,給每個字尾都求個排名。然後每次取得時候取排名更小的就行了。注意這個題的輸出格式,每80個字元輸出為...

03 佇列操作

時間限制 100ms 記憶體限制 100kb 描述假設以帶頭節點的迴圈鍊錶表示佇列,並且只設乙個指標指向隊尾元素節點 不設頭指標 節點元素這裡設為整型,編寫佇列的初始化 入隊和出隊演算法。其中入隊元素個數n及其節點資料,和出隊元素個數m都是從鍵盤輸入 預設n m都不小於0 然後輸出出隊元素,出隊不合...

演算法(9)佇列

佇列是一種先進先出 first in first out 的資料結構,重要的元素有 頭,尾,佇列長度。佇列的操作基本有四種,驗空 isempty 驗滿 isfull 出隊 dequeue 入隊 enqueue 實現佇列有兩種方法,陣列和鍊錶。這裡陣列的程式是我自己寫的,鍊錶的則是參考 c prime...