「SCOI2015」小凸玩矩阵

思路:

  二分+最大流;

代码:

#include <bits/stdc++.h>
using namespace std;
#define maxn 300
#define maxque 666666
#define INF 0x3f3f3f3f
int n,m,k,ai[maxn][maxn],E[maxque],V[maxque],head[maxn*maxn*],cnt,s,t;
int F[maxque],deep[maxn*maxn*],que[maxque<<];
inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'')Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
}
inline void edge_add(int u,int v,int f)
{
E[++cnt]=head[u],V[cnt]=v,F[cnt]=f,head[u]=cnt;
E[++cnt]=head[v],V[cnt]=u,F[cnt]=,head[v]=cnt;
}
inline bool bfs()
{
for(int i=s;i<=t;i++) deep[i]=-;
int h=,tail=,now;deep[s]=,que[h]=s;
while(h<tail)
{
now=que[h++];
for(int i=head[now];i;i=E[i])
{
if(F[i]&&deep[V[i]]<)
{
deep[V[i]]=deep[now]+;
if(V[i]==t) return true;
que[tail++]=V[i];
}
}
}
return false;
}
inline int flowing(int now,int flow)
{
if(now==t||flow<=) return flow;
int oldflow=;
for(int i=head[now];i;i=E[i])
{
if(!F[i]||deep[V[i]]!=deep[now]+) continue;
int pos=flowing(V[i],min(flow,F[i]));
F[i]-=pos,flow-=pos,oldflow+=pos,F[i^]+=pos;
if(!flow) return oldflow;
}
if(!oldflow) deep[now]=-;
return oldflow;
}
bool check(int lit)
{
cnt=,s=,t=n+m+maxn*maxn+;
for(int i=s;i<=t;i++) head[i]=;
for(int i=;i<=n;i++)
{
edge_add(s,i,);
for(int v=;v<=m;v++)
{
if(ai[i][v]<=lit)
{
edge_add(i,i*m+v-m,INF);
edge_add(i*m+v-m,v+n,INF);
}
}
}
for(int i=;i<=m;i++) edge_add(i+n,t,);
int pos=;
while(bfs()) pos+=flowing(s,INF);
return pos>=k;
}
int main()
{
in(n),in(m),in(k),k=n-k+;
int l=,r=,mid,ans=;
for(int i=;i<=n;i++)
for(int v=;v<=m;v++) in(ai[i][v]),r=max(ai[i][v],r);
while(l<=r)
{
mid=l+r>>;
if(check(mid)) ans=mid,r=mid-;
else l=mid+;
}
cout<<ans;
return ;
}

最新文章

  1. C#中的异步和同步
  2. C#导出GridView数据到Excel文件类
  3. Jq自定义动画
  4. Java &quot;==和equals区别&quot; 示例
  5. java复习-多线程
  6. memo用法总结
  7. Log4j 2使用教程一【入门】
  8. Glass Dragon
  9. Applese 的毒气炸弹 G 牛客寒假算法基础集训营4(图论+最小生成树)
  10. LOJ#2302 整数
  11. JAVA自学笔记25
  12. python集合操作和内置方法
  13. Redundant Paths POJ - 3177(边—双连通分量)
  14. python基础2之字符串、列表、字典、集合
  15. Alpha 冲刺四
  16. Dom4j操作XML实战,解析和插入XML实例
  17. 解题:APIO 2012 派遣
  18. iPhone较为基础的代码片段
  19. 基于Web Service的客户端框架搭建四:终结篇
  20. Python基础-进程和线程

热门文章

  1. 如何给apk文件签名
  2. Leetcode 445. 两数相加 II
  3. HDU2688 树状数组(逆序数)
  4. gps各种地图坐标系转换
  5. maven中jar包的maven地址查询
  6. Fragment+ViewPager实现仿微信点击和滑动切换界面
  7. 关于$.data(element,key,value)与ele.data.(key,value)的区别
  8. [USACO09DEC] Cow Toll Paths
  9. wcf 服务创建,配置,测试
  10. jsp 内置对象(一)