SCOI2015 小凸玩矩陣 題解

2021-09-11 01:34:23 字數 1384 閱讀 8328

題意見題面。

我們容易看出,答案肯定是單調的,所以便想到二分,對於判斷能否選到,我們發現行和列的限制就是二分圖匹配的模型,所以直接套個二分圖就好啦。

注意:是第k

kk大的數!!,所以判斷時為n−k

+1

n-k+1

n−k+

1,因為這個wa了好幾遍qaq

#include

#include

#include

using

namespace std;

const

int n=

300,m=

1e6+

1,inf=

1e9;

int n,m,k,s,t;

int mat[n]

[n],ls[m]

,tot;

struct ssss(

int a,

int b,

int c):to

(a),

last

(b),

cap(c)

}g[m<<1]

;int head[n+n]

,cnt;

void

clear()

void

add(

int a,

int b,

int c)

int dep[n+n]

,cur[n+n]

,que[m]

,p,q;

bool

bfs(

) dep[s]=1

;que[p=q=0]

=s;for

(int a;p<=q;p++)}

}return0;

}int

dfs(

int a,

int cap)}if

(!tot)dep[a]=0

;return tot;

}int

maxflow()

bool

check

(int val)

intmain()

}sort

(ls+

1,ls+tot+1)

; tot=

unique

(ls+

1,ls+tot+1)

-ls-1;

int l=

1,r=tot,ans=tot;

while

(l<=r)

printf

("%d\n"

,ls[ans]);

fclose

(stdin);

fclose

(stdout);

return0;

}

SCOI2015 小凸玩矩陣

題目很明顯的乙個事情,求第 k 大的最小值,一般採用的做法是二分 有人會問,但是不滿足二分性啊,接著往下看 考慮二分答案,但是如何檢驗 mid 是對還是錯,考慮每次只能取 mid 的數字,如果能取到 n k 1 個數字以上就可以,至於看能否取到 n k 1 個,採用二分圖匹配,左邊的點是行,右邊的點...

SCOI2015 小凸玩矩陣

題目 洛谷p4251 bzoj4443。題目大意 有乙個 n times m n leq m 的矩陣,要選出n個數,使得這n個數既不同行也不同列。問選的數中第k大的數最小可以是多少。解題思路 首先二分答案,然後只要判斷,是否能選擇至少n k 1個數,它們的值都不超過當前的答案。然後很簡單,對每個小於...

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的最短路徑上經過的邊權之和。你一開始可以選擇乙個起始點,並點亮這個點,這一步不需要花費。你...