普及練習場之排序

2022-07-22 05:51:14 字數 2975 閱讀 2535

p1177 【模板】快速排序

總:看題目,模板啊!

var

n,i:longint;

a:array [1..100001] of longint;

procedure

qsort

(l,r:longint);

var i,j,temp,key:longint;

begin

if l>=r then

exit;

i:=l; j:=r; key:=a[random(r-l+1)+l];

repeat

while a[i]do inc(i);

while a[j]>key do dec(j);

if i<=j then

begin

temp:=a[i]; a[i]:=a[j]; a[j]:=temp;

inc(i); dec(j);

end;

until i>j;

qsort(l,j);

qsort(i,r);

end;

begin

readln(n);

for i:=1

to n do

read(a[i]);

qsort(1,n);

for i:=1

to n do

write(a[i],' ');

end.

p1059 明明的隨機數

總:看資料範圍,可以用桶排。然而我用了十分暴力的方法。

var i,j,n,t,p,s:longint;

a,b:array [1..5000] of longint;

begin

read(n);

for i:=1

to n do

read(a[i]);

for i:=1

to n-1

dofor j:=i+1

to n do

if a[i]>a[j] then

begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end; s:=0;

p:=a[1];

for i:=1

to n do

if p<>a[i+1] then

begin

inc(s); b[s]:=p;

p:=a[i+1];

end;

writeln(s);

for i:=1

to s do

write(b[i],' ');

end.

p1068 分數線劃定

總:不錯的多關鍵字排序。

var

a,b:array [1..5000] of longint;

n,m,k,s,i,j,t:longint;

begin

read(n,m);

m:=trunc(m*1.5);

for i:=1

to n do

read(b[i],a[i]);

for i:=1

to n-1

dofor j:=i+1

to n do

if (a[i]or (a[i]=a[j]) and (b[i]>b[j]) then

begin

k:=a[i]; a[i]:=a[j]; a[j]:=k;

t:=b[i]; b[i]:=b[j]; b[j]:=t;

end;

s:=m;

for i:=m+1

to n do

begin

if a[i]=a[m] then inc(s);

if a[i]then

break;

end;

writeln(a[m],' ',s);

for i:=1

to s-1

do writeln(b[i],' ',a[i]);

write(b[s],' ',a[s]);

end.

p1781 宇宙**

總:這就是很單純很單純的排序啊!好吧,「故事」很深啊。看到讀的數有100位之多,字串!將字串排序,或找最大的字串。

注:有相同的要取後面那個,坑。

var

n:integer;

l,num:array [0..21] of integer;

a:array [0..21] of

string;

procedure

init;

var i:longint;

begin

readln(n);

for i:=1

to n do

begin

readln(a[i]);

l[i]:=length(a[i]);

num[i]:=i;

end;

end;

procedure

main;

var i,j:integer;

begin

for i:=1

to n-1

dofor j:=i+1

to n do

if (l[i]or (l[i]=l[j]) and (a[i]<=a[j]) then

begin

l[0]:=l[i]; l[i]:=l[j]; l[j]:=l[0];

a[0]:=a[i]; a[i]:=a[j]; a[j]:=a[0];

num[0]:=num[i]; num[i]:=num[j]; num[j]:=num[0];

end;

writeln(num[1]);

write(a[1]);

end;

begin

init;

main;

end.

普及練習場之排序

題目提供者ccf noi 評測方式雲端評測標籤noip普及組2006 難度入門難度 時空限制1000ms 128mb 提交 題解 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了nn個11到10001000之間的隨機整數 n 100 n 100 對於其中重複的數字,只...

普及練習場之交叉模擬

前言 不要被標題所迷惑!也不要被我的話所迷惑!p1023 稅收與補貼問題 稅收與補貼問題題解 p1031 均分紙牌 總 這個 真的是模擬了。var n,i,s,ans longint a array 1.10001 of longint begin readln n s 0 for i 1 to n...

洛谷試煉場 普及練習場 貪心

1.p1090合併果子 noip2004 優先佇列 貪心 題目鏈結 題目鏈結 2.p1181數列分段 貪心 題目鏈結 蒟蒻題解 3.p1208 usaco1.3 貪心 題目鏈結 蒟蒻題解 4.p1223排隊接水 貪心 題目鏈結 蒟蒻題解 5.p1094紀念品分組 noip2007普及 貪心 題目鏈結...