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 #include6using
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條道路。小人國的交通狀況非常槽糕。有的時候由於交通堵塞,兩座城市之間的道路會變得不...