【題解】
二分答案+二分圖匹配。
先二分最小值min,然後掃一遍這個矩陣,把滿足a[i][j]<=min的i,j連邊,之後跑二分圖匹配,如果最大匹配數大於等於n-k+1,當前的min即是合法的。題目中要求選出的數不能在同一行或者同一列,而這種行與列連邊跑二分圖的做法就保證了一行與一列對應,最多只能選一次。題目中求第k大數的最小值,即有n-k+1個數小於等於min,也就是最大匹配數大於等於n-k+1.
1 #include2 #include3 #include4view code#define n 300
5#define rg register
6using
namespace
std;
7int
n,m,k,tmp,tot,t,last[n],a[n][n],p[n],v[n];
8struct
edgee[n*n];
11 inline int
read()
17bool dfs(int
x)23}24
return0;
25}26 inline bool check(int
x); last[i]=tot;33}
34for(rg int i=1;i<=n;i++) ++t,tmp+=dfs(i);
35return tmp>n-k;36}
37int
main()
46while(l+1
50 printf("
%d\n
",r);
51return0;
52 }
洛谷P4251 SCOI2015 小凸玩矩陣題解
小凸和小方是好朋友,小方給了小凸乙個 n m n leq m n m 的矩陣 a,並且要求小凸從矩陣中選出 n 個數,其中任意兩個數都不能在同一行或者同一列。現在小凸想知道,選出的 n 個數中第 k 大的數的最小值是多少。include include include include include...
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的最短路徑上經過的邊權之和。你一開始可以選擇乙個起始點,並點亮這個點,這一步不需要花費。你...
SCOI2015 小凸想跑步
題目 先推一波式子,設 p x,y 那麼我們嘗試寫出點 x i,y i x y 和 p x,y 形成的三角形面積,就是用叉積寫一波 2s x i x y y x x y i y 大力拆開式子,發現 2s y y x x x i y x iy x y i 不難發現這是乙個 ax by c 的形式,肯定...