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

本文共 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

你可能感兴趣的文章
Python BeautifulSoup库的用法
查看>>
吴裕雄--天生自然 R语言开发学习:数据集和数据结构
查看>>
vs+ef+mysql 环境设置
查看>>
validform 一款好用的表单验证插件
查看>>
24-Longest Palindromic Substring-Leetcode
查看>>
新的开始——3.3
查看>>
1600802014
查看>>
分区-格式化-挂载-使用
查看>>
Zabbix 3.0入门到企业实战一(介绍监控的目的需求)
查看>>
Building a WPF Sudoku Game: Part 5 - The AI Battle: Loading and Comparing AI Plug-ins
查看>>
Linux-10Year
查看>>
将 Range 对象赋给变量
查看>>
C# int? int区别
查看>>
ASP.NET(C#)——日期函数
查看>>
vue按需引入echarts
查看>>
C#--抽象工厂设计模式原理
查看>>
Linux查找命令
查看>>
java数据类型
查看>>
python 递归求和
查看>>
wordpress加入站长统计功能
查看>>