Usaco 2007 Dec gold 佇列變換

2021-07-26 05:05:34 字數 2371 閱讀 8600

description

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

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

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

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

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

input

* 第1行: 乙個整數:n

* 第2..n+1行: 第i+1行僅有1個'a'..'z'中的字母,表示佇列中從前往後數第i頭奶牛名字的首字母

output

* 第1..??行: 輸出fj所能得到的字典序最小的佇列。每行(除了最後一行)輸出恰好80個'a'..'z'中的字母,表示新佇列中每頭奶牛姓名的首字母

sample input

6ac

dbcb

sample output

abcbcd

data constraint

hint

【樣例解釋】

運算元原佇列新佇列

#1acdbcb

#2cdbcba#3

cdbc

ab#4

cdbabc

#5cd

abcb#6d

abcbc

#7abcbcd

題解:

貪心,頭尾指標列舉字串兩邊,選小的那個,若相等,則往內延伸判斷哪邊裡面的字元更小

var     n,l,r,i,t1,t2,bz:longint;

s,s2:ansistring;

c:char;

begin

readln(n);

for i:=1

to n do

begin

readln(c);

s:=s+c;

if (i>1)and(s[i]<>s[i-1]) then bz:=1;

end;

if bz=0

then

begin

for i:=1

to length(s) do

begin

write(s[i]);

if i mod

80=0

then writeln;

end;

exit;

end;

l:=1;

r:=length(s);

while ldo

begin

if s[l]then

begin

s2:=s2+s[l];

inc(l);

endelse

if s[r]then

begin

s2:=s2+s[r];

dec(r);

endelse

begin

t1:=l;

t2:=r;

while s[t1]=s[t2] do

begin

inc(t1);

dec(t2);

end;

if s[t1]then

begin

s2:=s2+s[l];

inc(l);

endelse

begin

s2:=s2+s[r];

dec(r);

end;

end;

end;

s2:=s2+s[l];

for i:=1

to length(s2) do

begin

write(s2[i]);

if i mod

80=0

then writeln;

end;

end.

1625 Usaco2007 Dec 寶石手鐲

time limit 5 sec memory limit 64 mb submit 1268 solved 887 submit status discuss 貝茜在珠寶店閒逛時,買到了乙個中意的手鐲。很自然地,她想從她收集的 n 1 n 3,402 塊寶石中選出最好的那些鑲在手鐲上。對於第i塊寶...

1625 Usaco2007 Dec 寶石手鐲

貝茜在珠寶店閒逛時,買到了乙個中意的手鐲。很自然地,她想從她收集的 n 1 n 3,402 塊寶石中選出最好的那些鑲在手鐲上。對於第i塊寶石,它的重量為w i 1 w i 400 並且貝茜知道它在鑲上手鐲後能為自己增加的魅力值d i 1 d i 100 由於貝茜只能忍受重量不超過m 1 m 12,8...

USACO 修理牛棚

同樣是一道貪心題,我的思路是用乙個陣列存下所有的空擋,對空擋進行排序,然後再在總長度中減去前m 1 大的空檔長度。關鍵還是理解題意。貌似洛谷 oj不支援 int min 之類的。還有要對初始資料排一次序,害我 wa了一次。include include includeusing namespace ...