jzoj P4310 最優交換___列舉+貪心
阿新 • • 發佈:2019-01-25
題目大意:
題解:
這題我們發現是一個很顯然的貪心:
從首位開始向後搞,每次將後面能挪過來的最大的挪過來即可
注意下挪過來的過程中,挪的那個數是放在這一位的前面,其他是不變的,
一開始我把i和要變換過來的第j位對調了....
時間複雜度:O(TN^2)
程式碼:
var
rp,i,j,k,l,t:longint;
s:string;
w:char;
begin
assign(input,'swap.in'); reset(input);
assign(output,'swap.out'); rewrite(output);
readln(t);
for rp:=1 to t do
begin
read(w);
s:='';
while w<>' ' do
begin
s:=s+w;
read(w);
end;
read(k);
for i:=1 to length(s)-1 do
begin
w:=s[i];
j:=0 ;
l:=0;
while (j<k) and (i+j+1<=length(s)) do
begin
inc(j);
if s[i+j]>w then
begin
w:=s[i+j];
l:=j;
end ;
end;
if l<>0 then
begin
delete(s,i+l,1);
insert(w,s,i);
k:=k-l;
end;
end;
readln;
writeln(s);
end;
close(input); close(output);
end.