SHOI2008 迴圈的債務

2022-05-10 22:21:53 字數 2139 閱讀 3550

alice、bob和cynthia總是為他們之間混亂的債務而煩惱,終於有一天,他們決定坐下來一起解決這個問題。

不過,鑑別鈔票的真偽是一件很麻煩的事情,於是他們決定要在清還債務的時候盡可能少的交換現金。比如說,al

ice欠bob 10元,而cynthia和他倆互不相欠。現在假設alice只有一張50元,bob有3張10元和10張1元,cynthia有3

張20元。一種比較直接的做法是:alice將50元交給bob,而bob將他身上的錢找給alice,這樣一共就會有14張鈔票

被交換。但這不是最好的做法,最好的做法是:alice把50塊給cynthia,cynthia再把兩張20給alice,另一張20給

bob,而bob把一張10塊給c,此時只有5張鈔票被交換過。沒過多久他們就發現這是乙個很棘手的問題,於是他們找

到了精通數學的你為他們解決這個難題。

輸入的第一行包括三個整數:x1、x2、x3(-1,000≤x1,x2,x3≤1,000),其中 x1代表alice欠bob的錢(如

果x1是負數,說明bob欠了alice的錢) x2代表bob欠cynthia的錢(如果x2是負數,說明cynthia欠了bob的錢) x3

代表cynthia欠alice的錢(如果x3是負數,說明alice欠了cynthia的錢)

接下來有三行

每行包括6個自然數:

a100,a50,a20,a10,a5,a1

b100,b50,b20,b10,b5,b1

c100,c50,c20,c10,c5,c1

a100表示alice擁有的100元鈔票張數,b50表示bob擁有的50元鈔票張數,以此類推。

另外,我們保證有a10+a5+a1≤30,b10+b5+b1≤30,c10+c5+c1≤30,而且三人總共擁有的鈔票面值總額不會

超過1,000。

如果債務可以還清,則輸出需要交換鈔票的最少張數;如果不能還清,則輸出「impossible」(注意單詞全部

小寫,輸出到檔案時不要加引號)。

輸入一

10 0 0

0 1 0 0 0 0

0 0 0 3 0 10

0 0 3 0 0 0

輸入二

-10 -10 -10

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

輸出一5

輸出二0

對於100%的資料,x1、x2、x3 ≤ |1,000|。

f[i][s1][s2]表示前i種鈔票,第乙個人有j元,第二個人有k元,第三個人可以算出來

轉移時列舉s1,s2和第乙個人有j張i鈔票,第二個人有k張j鈔票,第三個人可以算出來

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7 typedef long

long

lol;

8 lol f[8][1001][1001

],inf;

9int sum[4],x1,x2,x3,pr[7],a[11][11],s,cnt[11

];10

intmain()

11 22

}23 s=sum[1]+sum[2]+sum[3

];24 memset(f,127/3,sizeof

(f));

25 inf=f[0][0][0

];26 f[1][sum[1]][sum[2]]=0;27

for (i=1;i<=6;i++)

2845}46

}47}48

}49 sum[1]-=x1;sum[2]+=x1;

50 sum[2]-=x2;sum[3]+=x2;

51 sum[3]-=x3;sum[1]+=x3;

52if (sum[1]<0||sum[2]<0||sum[3]<0||sum[1]+sum[2]+sum[3]!=s||f[7][sum[1]][sum[2]]==inf)

53 printf("

impossible\n");

54else

55 cout<7][sum[1]][sum[2

]];56 }

SHOI2008 堵塞的交通

有一篇超級棒的線段樹 大力分類討論的題解!戳我 可是我還是不會寫這個做法qwqwqwq 這裡提供線段樹分治的寫法。感覺比較不需要智商,就是跑的有點慢了。include include include include include include include include define max...

SHOI2008 堵塞的交通

這裡提供幾種不用腦子的演算法 當然是離線的 text 記下每條邊的刪除時間,用 text 維護最大生成樹,每次加進一條邊時,跟原來那條鏈上的做比較,刪除那條刪除時間最短的邊即可。線段樹分治 這個演算法將每條邊的加入和刪除時間加入到線段樹中,所以在遍歷到葉子節點時,那個時刻存在的邊都已經在並查集上了,...

SHOI2008 堵塞的交通

有一天,由於某種穿越現象作用,你來到了傳說中的小人國。小人國的布局非常奇特,整個國家的交通系統可 以被看成是乙個2行c列的矩形網格,網格上的每個點代表乙個城市,相鄰的城市之間有一條道路,所以總共有2c個 城市和3c 2條道路。小人國的交通狀況非常槽糕。有的時候由於交通堵塞,兩座城市之間的道路會變得不...