第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個人,不限制喝的次數,想...