普及練習場之交叉模擬

2021-07-26 13:56:57 字數 4442 閱讀 1616

前言:不要被標題所迷惑!也不要被我的話所迷惑!

p1023 稅收與補貼問題

:稅收與補貼問題題解

p1031 均分紙牌

總:這個……真的是模擬了。

var

n,i,s,ans:longint;

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

begin

readln(n); s:=0;

for i:=1

to n do

begin

read(a[i]);

s:=s+a[i];

end;

s:=s div n;

ans:=0;

if a[1]<>s then

begin

if a[1]then

begin a[2]:=a[2]-(s-a[1]); a[1]:=s; end

else

begin a[2]:=a[2]+(a[1]-s); a[1]:=s; end; inc(ans); end;

if a[n]<>s then

begin

if a[n]then

begin a[n-1]:=a[n-1]-(s-a[n]); a[n]:=s; end

else

begin a[n-1]:=a[n-1]+(a[n]-s); a[n]:=s; end; inc(ans); end;

for i:=2

to n-1

dobegin

if a[i]<>s then

begin

if a[i]then

begin a[i+1]:=a[i+1]-(s-a[i]); a[i]:=s; end

else

begin a[i+1]:=a[i+1]+(a[i]-s); a[i]:=s; end; inc(ans); end;

end;

write(ans);

end.

p1042 桌球

總:懷念小學,那時用字串寫,坑了我啊(忘了怎麼坑的)。

這題……又是模擬。

var

a:array [1..1000001] of char;

i,j,k,n,w,l,w1,l1:longint;

begin

repeat

i:=i+1;

read(a[i]);

until a[i]='e';

i:=0;

repeat

i:=i+1;

if (a[i]='w') or (a[i]='l') then

begin

if a[i]='w'

then inc(w)

else inc(l);

if ((w>=11) or (l>=11)) and (abs(w-l)>=2) then

begin

writeln(w,':',l);

w:=0; l:=0;

end;

end;

until a[i]='e';

writeln(w,':',l);

writeln;

i:=0; w:=0; l:=0;

repeat

i:=i+1;

if (a[i]='w') or (a[i]='l') then

begin

if a[i]='w'

then inc(w)

else inc(l);

if ((w>=21) or (l>=21)) and (abs(w-l)>=2) then

begin

writeln(w,':',l);

w:=0; l:=0;

end;

end;

until a[i]='e';

write(w,':',l);

end.

p1086 花生採摘

總:貪心策略,先拿大的。

var

m,n,k,nm,ans:longint;

x,y,a:array [0..401] of longint;

procedure

init;

var i,j,o:longint;

begin

readln(m,n,k);

for i:=1

to m do

for j:=1

to n do

begin

read(o);

if o>0

then

begin

inc(nm);

x[nm]:=i; y[nm]:=j;

a[nm]:=o;

end;

end;

end;

procedure

pd;var

i,j,t:longint;

begin

for i:=1

to nm do

for j:=1

to nm do

if a[i]>a[j] then

begin

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

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

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

end;

end;

procedure

main;

var i:longint;

begin

ans:=0; y[0]:=y[1];

if k<>0

then

for i:=0

to nm do

if k>=abs(x[i]-x[i+1])+abs(y[i]-y[i+1])+1+x[i+1] then

begin

k:=k-abs(x[i]-x[i+1])-abs(y[i]-y[i+1])-1;

ans:=ans+a[i+1]

endelse

break;

write(ans);

end;

begin

init;

pd;main;

end.

p1098 字串的展開

總:就是判斷輸出啊。

var

s,s1,s2:ansistring;

i,j,n,m,x,y,z:longint;

procedure

hjy(o:longint);

var i,j:longint;

begin

s1:=''; s2:='';

if ord(s[o-1])>=ord(s[o+1]) then

exit;

if ord(s[o-1])+1=ord(s[o+1]) then

begin

delete(s,o,1);

exit;

end;

for i:=ord(s[o-1])+1

to ord(s[o+1])-1

dofor j:=1

to y do

s1:=s1+chr(i);

if x=2

then

for i:=1

to length(s1) do

if (s1[i]>='a') and (s1[i]<='z') then s1[i]:=chr(ord(s1[i])-32);

if x=3

then

for i:=1

to length(s1) do

s1[i]:='*';

if z=2

then

begin

for i:=1

to length(s1) do

s2:=s2+s1[length(s1)-i+1];

s1:=s2;

end;

delete(s,o,1); insert(s1,s,o);

end;

begin

readln(x,y,z);

readln(s);

n:=length(s);

i:=2; s:=s+'+';

while s[i]<>'+'

dobegin

if (s[i-1]<>'-') and (s[i+1]<>'-') then

if (s[i]='-') and (((ord(s[i-1])>=97) and (ord(s[i+1])>=97)) or ((ord(s[i-1])<=57) and (ord(s[i+1])<=57))) then

hjy(i);

inc(i);

end;

delete(s,length(s),1);

writeln(s);

end.

普及練習場之排序

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

普及練習場之排序

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 ...

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

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