日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配

發布時間:2025/4/16 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#2006. 「SCOI2015」小凸玩矩陣

內存限制:256 MiB時間限制:1000 ms標準輸入輸出 題目類型:傳統評測方式:文本比較 上傳者: 匿名 提交提交記錄統計討論測試數據

題目描述

小凸和小方是好朋友,小方給小凸一個?N×M N \times MN×M(N≤M N \leq MNM)的矩陣?A AA,要求小凸從其中選出?N NN?個數,其中任意兩個數字不能在同一行或同一列,現小凸想知道選出來的?N NN?個數中第?K KK?大的數字的最小值是多少。

輸入格式

第一行給出三個整數?N NN、M MM、K KK。
接下來?N NN?行,每行?M MM?個數字,用來描述這個矩陣。

輸出格式

輸出選出來的?N NN?個數中第?K KK?大的數字的最小值。

樣例

樣例輸入

3 4 2 1 5 6 6 8 3 4 3 6 8 6 3

樣例輸出

3

數據范圍與提示

1≤K≤N≤M≤250,1≤Ai,j≤109 1 \leq K \leq N \leq M \leq 250, 1 \leq A_{i, j} \leq 10 ^ 91KNM250,1A?i,j??10?9??

?

題目鏈接:https://loj.ac/problem/2006

題意:選出n個行列不相同的數,使得第k大最小。

思路:二分答案+二分匹配。二分答案,然后對行和列進行二分匹配,a[i][j]<=mid的最大匹配與n-k+1進行比較。

代碼:

#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<set> #include<queue> #include<stack> #include<map> #include<vector> using namespace std; typedef long long ll; typedef pair<int,int> P; const int maxn=300,maxm=1e5+100,inf=0x3f3f3f3f,mod=1e9+7; const ll INF=1e18+7; int n,m,k; ll a[maxn][maxn]; vector<int>G[maxn]; int match[maxn]; int used[maxn]; bool dfs(int u,ll mid) {for(int v=1; v<=m; v++){if(a[u][v]>mid) continue;if(used[v]) continue;used[v]=true;if(match[v]<0||dfs(match[v],mid)){match[v]=u;return true;}}return false; } bool check(ll mid) {int res=0;memset(match,-1,sizeof(match));for(int i=1; i<=n; i++){memset(used,false,sizeof(used));res+=dfs(i,mid);}//cout<<res<<endl;return res>=n-k+1?1:0; } int main() {scanf("%d%d%d",&n,&m,&k);ll l=INF,r=0;for(int i=1; i<=n; i++){ll mmin=INF,mmax=0;for(int j=1; j<=m; j++){scanf("%d",&a[i][j]);l=min(l,a[i][j]),r=max(r,a[i][j]);}}ll ans=-1;while(l<=r){ll mid=(l+r)/2;//cout<<l<<" "<<r<<" "<<mid<<endl;if(check(mid)) r=mid-1,ans=mid;else l=mid+1;}printf("%lld\n",ans);return 0; } 二分答案+二分比配

?

轉載于:https://www.cnblogs.com/GeekZRF/p/7309238.html

總結

以上是生活随笔為你收集整理的LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。