博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mike的农场 BZOJ4177
阅读量:6001 次
发布时间:2019-06-20

本文共 1885 字,大约阅读时间需要 6 分钟。

分析:

最小割,不选则割的建模题...(然而一开始我当成了费用流,简直丧心病狂...最后想到了最小割...)

对于条件一,直接建一条双向边就可以了,并且不计入sum中,因为这是作为费用的存在,让它跑出来就可以了,不要考虑太多的。对于条件二,建一个点,分别连向{S}牧场,流量为inf,并且如果是0的话,连接S,如果是1的话,连接T。

附上代码:

#include 
#include
#include
#include
#include
#include
#include
using namespace std;#define N 15005#define S 0#define T 15001int head[N],cnt,dep[N],n,m,k;long long sum;struct node{ int to,next,val;}e[1000010];void add(int x,int y,int z){e[cnt].to=y;e[cnt].next=head[x];e[cnt].val=z;head[x]=cnt++;}void insert(int x,int y,int z){add(x,y,z);add(y,x,0);}int bfs(){ memset(dep,-1,sizeof(dep)); queue
q;while(!q.empty())q.pop();q.push(S);dep[S]=1; while(!q.empty()) { int x=q.front();q.pop(); for(int i=head[x];i!=-1;i=e[i].next) { int to1=e[i].to; if(dep[to1]==-1&&e[i].val)dep[to1]=dep[x]+1,q.push(to1); } } return dep[T]==-1?0:1;}int dfs(int x,int maxf){ if(x==T)return maxf; int tflow=maxf,nowf; for(int i=head[x];i!=-1;i=e[i].next) { int to1=e[i].to; if(dep[to1]==dep[x]+1&&e[i].val) { nowf=dfs(to1,min(e[i].val,tflow)); if(!nowf)dep[to1]=-1; tflow-=nowf,e[i].val-=nowf,e[i^1].val+=nowf; if(!tflow)break; } } return maxf-tflow;}int main(){ memset(head,-1,sizeof(head)); scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=n;i++) { int x; scanf("%d",&x);sum+=x; insert(S,i,x); } for(int i=1;i<=n;i++) { int x; scanf("%d",&x);sum+=x; insert(i,T,x); } for(int i=1;i<=m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); insert(x,y,z);insert(y,x,z); } for(int i=1;i<=k;i++) { int x,y,z,v;scanf("%d%d%d",&x,&y,&z);sum+=z; if(y==0) { insert(S,i+n,z); while(x--){scanf("%d",&v);insert(i+n,v,1<<30);} }else { insert(i+n,T,z); while(x--){scanf("%d",&v);insert(v,i+n,1<<30);} } } long long ans=0; while(bfs())ans+=dfs(S,1<<30); printf("%lld\n",sum-ans); return 0;}

  

转载于:https://www.cnblogs.com/Winniechen/p/9128633.html

你可能感兴趣的文章
用 Google Map 的 Geocoder 接口来反向地址解析
查看>>
在中小型公司如何做好测试——论测试计划的重要性
查看>>
BSS段、数据段、代码段、堆与栈
查看>>
python调用c/c++写的dll
查看>>
r语言ggplot2误差棒图快速指南
查看>>
python之处理异常
查看>>
c++中的虚函数
查看>>
遍历form表单里面的表单元素,取其value
查看>>
PHP TP框架基础
查看>>
directive ngChecked
查看>>
面试110道题
查看>>
python 08 文件操作
查看>>
强势解决:windows 不能在本地计算机中起动Tomcat参考特定错误代码1
查看>>
Gradle 配置debug和release工程目录
查看>>
spring mvc处理ios 请求头不全时空参 无法解析的问题处理
查看>>
SpringBoot RabbitMq集成
查看>>
使用webmagic构建一个分布式的爬虫
查看>>
c运算符和优先级
查看>>
TODO:一不顺眼就换字体Go之代码篇
查看>>
Linux设备驱动程序编写
查看>>