bzoj1692 佇列變換

2022-04-10 05:42:26 字數 820 閱讀 7869

題目鏈結

首先肯定想到貪心,從隊尾和隊首取更小的那個。

但是如果遇到隊尾和隊首一樣大的情況呢,總不能再挨個往前比較。所以就把整個字串倒過來再掛到現在字串的後面,也就是把當前字串對稱過去。然後求出字尾陣列,給每個字尾都求個排名。然後每次取得時候取排名更小的就行了。

注意這個題的輸出格式,每80個字元輸出為一行。

#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int n = 60000 + 100;

ll read()

while(c>='0'&&c<='9')

return x*f;

}char s[n];

int n,m;

int x[n],c[n],y[n],sa[n],rk[n];

void get_sa()

for(int i = 1;i <= n;++i) rk[sa[i]] = i;

}char ans[n];

int anss;

int main()

n *= 2;

m = 'z';

get_sa();

int l = 1,r = len + 1;

while(l + r - len - 2 < len)

for(int i = 1;i <= anss;++i)

return 0;

}

乙個始終不被善待的人,最能識別善良,也最珍惜善良。

bzoj 1692 字尾陣列

將乙個字串進行如下操作 每次拿去首或尾,放在新字串尾,問新字串字典序最小的情況。直覺貪心,但情況複雜。可以用字尾陣列,每次比較當前剩餘串正序和倒序哪種字典序小,可以如下構建 abcd abcd0dcba include include include include include include ...

Jzoj 1247 佇列變換

fj打算帶他的n 1 n 30,000 頭奶牛去參加一年一度的 全美農場主大獎賽 在這場比賽中,每個參賽者都必須讓他的奶牛排成一列,然後領她們從裁判席前依次走過。今年,競賽委員會在接受隊伍報名時,採用了一種新的登記規則 他們把所有隊伍中奶牛名字的首字母取出,按它們對應奶牛在隊伍中的次序排成一列 比如...

03 佇列操作

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