第3題 倒水

2021-08-01 09:55:37 字數 2577 閱讀 3592

第3題

: 倒水

【題目描述】

從前有乙個dtz,它面前有一排格仔,每個格仔都放著乙個杯子,每個杯子下面都配有乙個集水盤,每個杯子都有有限的容量,而集水盤沒有容量限制。

由於水利局局長skylynf想喝水,dtz需要往杯子裡面倒水。

dtz有兩種操作,1.倒水;2.交換。具體如下: · 

1.倒水:

dtz不是乙個乙個杯子地倒水,而是一片片的倒水。它每次選擇乙個連續區域

a~b,第

a個杯子倒到第

b個杯子(包含a和

b),往裡面的每個杯子倒入相同的水(即杯子們的水量同時加上乙個數)。由於杯子大小不一。倒了若干次以後,某些杯子會溢位來很多水,流進這些杯子下面的集水盤裡面。如果第

a個杯子(即最前面那個杯子)溢水了,

dtz就會毫不猶豫地交換第

a個杯子和第

b個杯子,但不移動原本的集水盤。(以上

2個操作同屬

1個倒水操作)

· 2.交換:但是

dtz特別調皮,除了上述情況,他有時候會在倒完一片水之後,交換一些杯子的位置,但不移動原本的集水盤。

skylynf在想知道dtz一系列操作完成後,最後所有杯子水量的情況的同時,喝令dtz算出每個集水盤有多少被浪費的水。

同時,dtz被紅雲威脅去幫它解密碼,好讓紅雲有時間餵養它的蜘蛛們,但他倒水任務在身,請你趕快幫他完成任務,不然dtz就會變成一台iphone6.

所以請幫dtz計算一下倒水的結果吧。

【輸入描述】

第一行2個整數n,m,表示方格陣有n個格仔(1<=n<=3000 1<=m<=100),dtz總共倒了m次水。

接下來一行n個整數,每個數字之間用空格隔開。表示每個杯子的最大容量為x 份水(1<=x<=1000)。

接下來m行,每行3個整數a, b, s (1<=a<=b<=n 0<=s<=30), · 

如果s等於

0,則表示

dtz要把第

a個杯子和第

b個杯子交換位置;

· 如果s不為

0,那就表示

dtz要倒水,這次倒水從第

a個杯子倒到第

b個杯子(包含a和

b)每乙個杯子倒

s份水。

【輸出描述】

第一行n個整數,每個整數之間用空格隔開,表示最後每個杯子裡面有多少水。

接下來一行再有n個整數,表示最後每個杯子的集水盤裡面有多少水。

【輸入樣例】

3 3

1 2 3

1 2 1

1 3 0

2 3 1

【輸出樣例】

0 2 1

0 0 1 

vari,j,k,n,m,x,y,z:longint;

a,b,c:array[-10..10001]of longint;

begin

assign(input,'c.in');reset(input);

assign(output,'c.out');rewrite(output);

readln(n,m);

for i:=1 to n do

begin

read(b[i]);

end;

readln;

for i:=1 to m do

begin

readln(x,y,z);

if z=0 then

begin

a[0]:=a[x];

a[x]:=a[y];

a[y]:=a[0];

b[0]:=b[x];

b[x]:=b[y];

b[y]:=b[0];

endelse

begin

for j:=x+1 to y do

begin

a[j]:=a[j]+z;

if a[j]>b[j] then

begin

c[j]:=c[j]+a[j]-b[j];

a[j]:=b[j];

end;

end;

a[x]:=a[x]+z;

if a[x]>b[x] then

begin

c[x]:=c[x]+a[x]-b[x];

a[x]:=b[x];

a[0]:=a[x]; a[x]:=a[y]; a[y]:=a[0];

b[0]:=b[x]; b[x]:=b[y]; b[y]:=b[0];

end;

end;

end;

for i:=1 to n do

begin

write(a[i],' ');

end;

writeln;

for i:=1 to n do

begin

write(c[i],' ');

end;

close(input);

close(output);

end.

3水杯倒水問題

問題 給出三個杯子的容量abc 其中剛開始時c杯是滿的,ab是空的。現在在保證不會有漏水的情況下進行如下操作 將乙個杯子x的水倒到另乙個杯子y中,如果x空了或者y滿了就停止 滿足其中乙個條件才停下 現問c中水量有多少種可能性 a,b,c為非負整數 解法1 數論,擴充套件歐幾里得 待補充解法2 模擬倒...

演算法題 水杯倒水的問題

本文將介紹以下內容 1.引言 上回 第八回 品味型別 值型別與引用型別 上 記憶體有理 的發布,受到大家的不少關注,我們從記憶體的角度了解了值型別和引用型別的所以然,留下的任務當然是如何應用型別的不同特點在系統設計 效能優化等方面發揮其作用。因此,本回是對上回有力的補充,同時應朋友的希望,我們盡力從...

演算法題 水杯倒水的問題

之前好像在看到這樣的題目 1.有3個容器,各是20公升,13公升,7公升,形狀不同也不透明。一開始20公升的容器裡面裝了20公升水,反正倒來倒去最後要讓20公升和13公升容器各裝了10公升水 2.2個外形不同的瓶子,各裝800毫公升水,另外還有1個300毫公升的杯子 現在有4個人,不限制喝的次數,想...