洛谷 4251 SCOI2015 小凸玩矩陣

2022-09-06 17:24:09 字數 902 閱讀 5072

【題解】

二分答案+二分圖匹配。

先二分最小值min,然後掃一遍這個矩陣,把滿足a[i][j]<=min的i,j連邊,之後跑二分圖匹配,如果最大匹配數大於等於n-k+1,當前的min即是合法的。題目中要求選出的數不能在同一行或者同一列,而這種行與列連邊跑二分圖的做法就保證了一行與一列對應,最多只能選一次。題目中求第k大數的最小值,即有n-k+1個數小於等於min,也就是最大匹配數大於等於n-k+1.

1 #include2 #include3 #include4

#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 }

view code

洛谷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 的形式,肯定...