題意:有m個格仔,有k個物品。我們希望在格仔與物品之間連數量盡可能少的邊,使得——不論是選出m個格仔中的哪k個,都可以與k個物品恰好一一匹配。
解法:從樣例猜出答案應該是k*(m-k+1)。從這個樣例可以找到合法的解決方案。每個物品,都要向(m - k + 1)個格仔連去一條邊,我們會丟棄m - k個格仔,但總會剩下乙個格仔是與這個物品連邊的。
我們強制這樣連邊1 -> [1, m - k + 1]
2 -> [2, 1 + m - k + 1]
3 -> [3, 2 + m - k + 1]
k -> [k, m] 這樣不論選哪些格仔,第乙個物品總是能匹配第乙個格仔,第二個物品總是能匹配第二個格仔…… 所以總能合法匹配!
#include using namespace std;typedef long long ll;
int main()
return 0;
}
hdu5455 2015瀋陽網路賽F題
題意 給出乙個串,問用題中定義的那些串來組成這個串最少要用多少個。思路 沒啥說的,注意一下輸入的串中可能出現除了c和f的字母。include include include include include include include include include include include...
hdu5452 2015瀋陽網路賽C題
題意 給出乙個無向圖和乙個此圖的生成樹,讓我們求乙個本圖的最小割邊集,割邊集只包括生成樹中的一條邊,讓割邊集的邊數最少,輸出數目。思路 並查集 暴力。include include include include include using namespace std const int maxn ...
hdu5461 2015瀋陽網路賽L題
題意 給出乙個數列,我們要在這裡找出兩個數,使得題意中那個表示式最大。思路 排兩個序就好了啊,看 一下就懂了。include include using namespace std const long long maxn 5 1000000 10 struct node aa maxn bb ma...