題目:洛谷p4251、bzoj4443。
題目大意:
有乙個\(n\times m(n\leq m)\)的矩陣,要選出n個數,使得這n個數既不同行也不同列。問選的數中第k大的數最小可以是多少。
解題思路:
首先二分答案,然後只要判斷,是否能選擇至少n-k+1個數,它們的值都不超過當前的答案。
然後很簡單,對每個小於等於當前答案的數,行向列連邊。做二分圖匹配即可。
時間複雜度\(n^2\log\)級別。
c++ code:
#include#include#includeint n,m,k;inline int readint()
int p[252][252],a[252][252],dy[252],vis[252];
int dfs(int u)
}return 0;
}bool ok(int x)
return ans>=n-k+1;
}int main()
printf("%d\n",ans);
return 0;
}
SCOI2015 小凸玩矩陣
題目很明顯的乙個事情,求第 k 大的最小值,一般採用的做法是二分 有人會問,但是不滿足二分性啊,接著往下看 考慮二分答案,但是如何檢驗 mid 是對還是錯,考慮每次只能取 mid 的數字,如果能取到 n k 1 個數字以上就可以,至於看能否取到 n k 1 個,採用二分圖匹配,左邊的點是行,右邊的點...
SCOI2015 小凸玩矩陣 題解
題意見題面。我們容易看出,答案肯定是單調的,所以便想到二分,對於判斷能否選到,我們發現行和列的限制就是二分圖匹配的模型,所以直接套個二分圖就好啦。注意 是第k kk大的數!所以判斷時為n k 1 n k 1 n k 1,因為這個wa了好幾遍qaq include include include us...
SCOI2015 小凸玩密室
演算法難度5,思維難度7,難度6 給定一棵n nn個點的完全二叉樹,樹邊帶權,點帶val x val x val x 的權值。定義兩個點的距離dis u,v dis u,v dis u,v 為u uu到v vv的最短路徑上經過的邊權之和。你一開始可以選擇乙個起始點,並點亮這個點,這一步不需要花費。你...