acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
登录
注册
题目详情提交记录(0)
  • tj

    #include<bits/stdc++.h> using namespace std; #define ll long long ll n,m,k; ll mapp[309][309],maxn=-1,head[309],last[90009],to[90009],tot=1,l,r; ll ans,match[309],vis[309]; void init() { memset(last,0,sizeof(last)); memset(head,0,sizeof(head)); memset(to,0,sizeof(to)); } void add(ll x,ll y)//加边 { tot++; to[tot]=y; last[tot]=head[x]; head[x]=tot; } bool path(ll u) { for(ll i=head[u];i!=0;i=last[i])//二分图匹配模板 { ll v=to[i]; if(vis[v]1) continue; vis[v]=1; if(match[v]-1||path(match[v])==true) { match[v]=u; return true; } } return false; } void slove() { ans=0; memset(match,-1,sizeof(match));//match数组表示匹配量 for(ll i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); if(path(i)==true) { ans++; } } } int main() { cin>>n>>m>>k; for(ll i=1;i<=n;i++) { for(ll j=1;j<=m;j++) { cin>>mapp[i][j]; maxn=max(maxn,mapp[i][j]);//maxn表示矩阵最大值 } } l=0,r=maxn; while(l<=r)//二分求值 { init(); //一定要初始化!!! ll mid=(l+r)/2; for(ll i=1;i<=n;i++) { for(ll j=1;j<=m;j++) { if(mapp[i][j]<mid) { add(i,j); } } } slove(); if(ans>n-k) { r=mid-1; } else { l=mid+1; } } cout<<r; return 0; }

    userId_undefined

    ༺ཌༀ༒☯∞复仇者∞☯༒ༀད༻™

    出道萌新时空双修者8月全勤卷王题解仙人
    2阅读
    0回复
    1点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页