POJ 2112 网络流英文阅读题
来源:互联网 发布:大金焓湿图软件 编辑:程序博客网 时间:2024/05/17 23:06
这题的题意佷坑爹啊。。。虽说是很明显的二分题。
说有K个奶牛机编号1-K,有C头奶牛,编号k+1-K+C这样形成了K+C阶的距离矩阵。每台奶牛机可以处理T只奶牛
开始呢... 只把机器和奶牛连了边,机器与奶牛的边全部去掉了... 无限WA...
后来想.. 如果流通过机器之间传到奶牛呢= =!!!有剩余流就可以做到了!
顿悟,狂敲,交... 无限WA....
后来看了看题,机器之间的流不算流啊... 只要牛进入机器产奶就行了= =,距离只是个过程啊.. 相当于转移过程,这不是流啊...
然后... 用floyd把最短路构建出来,因为最短路嘛,一定会比单边的长...但是... 这个边好像是和诶.... 不是单边诶... 难道说 莫名其妙的AC了= =
#include<iostream>#include<cstdio>#include<string>#define MN 255#define INF INT_MAX>>2using namespace std;struct edge{ int len,cap;}map[MN][MN];int que[MN],pre[MN],vis[MN],a[MN];int K,C,M,s,t,l,r,ans;void setG(){ int i,j,k; l=1;r=200000; s=0;t=K+C+1; memset( map,0,sizeof(map) ); for( i=1;i<=K+C;i++ ) for( j=1;j<=K+C;j++ ){ scanf( "%d",&map[i][j].len ); if( map[i][j].len==0 ) map[i][j].len=INF; } for( k=1;k<=K+C;k++ ) for( i=1;i<=K+C;i++ ) for( j=1;j<=K+C;j++ ) if( map[i][j].len>map[i][k].len+map[k][j].len ) map[i][j].len=map[i][k].len+map[k][j].len;}void initG( int len ){ int i,j;ans=0; for( i=0;i<=K+C+1;i++ ) for( j=0;j<=K+C+1;j++ ) map[i][j].cap=0; for( i=1;i<=K;i++ ) for( j=K+1;j<=K+C;j++ ) map[i][j].cap=map[i][j].len<=len?1:0; for( i=1;i<=K;i++ ) map[s][i].cap=M; for( i=K+1;i<=K+C;i++ ) map[i][t].cap=1;}bool bfs( int len ){ int head=0,foot=0; memset( vis,0,sizeof(vis) ); que[foot++]=s;vis[s]=true;a[s]=INT_MAX; while( head<foot ) { int u=que[head++]; for( int i=0;i<=t;i++ ) { if( !vis[i]&&map[u][i].cap ) { vis[i]=true; que[foot++]=i; pre[i]=u; a[i]=min( a[u],map[u][i].cap ); if( i==t )return true; } } } return false;}bool work(int len){ int m; while( bfs(len) ){ m=t; ans+=a[t]; while( m!=s ){ map[pre[m]][m].cap-=a[t]; map[m][pre[m]].cap+=a[t]; m=pre[m]; } } if( ans==C ) return true; else return false;}int main(){ while( scanf("%d%d%d",&K,&C,&M)!=EOF ) { int mid; setG(); while( (mid=(l+r)/2)&&l<r ){ initG(mid); if( work(mid) ) r=mid; else l=mid+1; } printf( "%d\n",mid ); } return 0;}
- POJ 2112 网络流英文阅读题
- POJ 2455 网络流英文阅读题
- POJ 3498 网络流英文阅读题
- POJ 3436 网络流 英文阅读题+技巧题
- ZOJ 2332 网络流英文阅读题
- POJ 1459 基本输入题&&英文阅读题
- POJ-2803 英文阅读+字符串处理
- 英文阅读
- 英文阅读
- 阅读英文
- POJ 3371 判断英文阅读轻松度(模拟)
- poj 2112 网络流
- POJ 2112 二分+网络流
- poj 2112 网络流+二分
- 英文文献阅读有感
- 阅读英文文献方法
- 程序员英文休闲阅读
- 英文深度阅读
- sql写库一般不要显示加锁,读库可去掉锁
- 怎么在页面加载时读取到数据库中的数据
- ListView之BaseAdapter的使用
- Comparator和Comparable
- wsf
- POJ 2112 网络流英文阅读题
- 第八周实验报告1.2
- 命令模式(Command Pattern)
- 制作iso
- Mobile Web App发展现状及展望
- 好吧,新的开始
- 笔记本电脑可否实现内置充电设置?
- 编程中经常出现的错误
- socket与http的区别