【传送门:BZOJ3511】


简要题意:

  给出n个点,m条边,每个点有A和B两种形态,一开始1为A,n为B

  给出VA[i]和VB[i],表示第i个点选择A和B形态的价值

  每条边给出x,y,EA,EB,EC,表示如果x和y都为A,则获得EA价值,如果都为B则获得EB价值,否则会得到EC的费用(就是负价值)

  求出最大价值


题解:

  神奇的最小割,太强了

  建图膜


参考代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
struct node
{int x,y,c,next,other;
}a[2100000];int len,last[110000];
void ins(int x,int y,int c)
{int k1=++len,k2=++len;a[k1].x=x;a[k1].y=y;a[k1].c=c;a[k1].next=last[x];last[x]=k1;a[k2].x=y;a[k2].y=x;a[k2].c=0;a[k2].next=last[y];last[y]=k2;a[k1].other=k2;a[k2].other=k1;
}
int h[110000],list[110000],st,ed;
bool bt_h()
{memset(h,0,sizeof(h));h[st]=1;int head=1,tail=2;list[1]=st;while(head!=tail){int x=list[head];for(int k=last[x];k;k=a[k].next){int y=a[k].y;if(h[y]==0&&a[k].c>0){h[y]=h[x]+1;list[tail++]=y;}}head++;}if(h[ed]==0) return false;else return true;
}
int findflow(int x,int f)
{if(x==ed) return f;int s=0,t;for(int k=last[x];k;k=a[k].next){int y=a[k].y;if(h[y]==(h[x]+1)&&a[k].c>0&&f>s){t=findflow(y,min(a[k].c,f-s));s+=t;a[k].c-=t;a[a[k].other].c+=t;}}if(s==0) h[x]=0;return s;
}
int main()
{int n,m;scanf("%d%d",&n,&m);int sum=0;st=0;ed=n+2*m+1;len=0;memset(last,0,sizeof(last));ins(st,1,999999999);for(int i=2;i<n;i++){int d;scanf("%d",&d);sum+=d;ins(st,i,d);}ins(n,ed,999999999);for(int i=2;i<n;i++){int d;scanf("%d",&d);sum+=d;ins(i,ed,d);}for(int i=1;i<=m;i++){int x,y,ea,eb,ec;scanf("%d%d%d%d%d",&x,&y,&ea,&eb,&ec);sum+=ea+eb;ins(x,y,ec);ins(y,x,ec);ins(i+n,x,999999999);ins(i+n,y,999999999);ins(x,i+n+m,999999999);ins(y,i+n+m,999999999);ins(st,i+n,ea);ins(i+n+m,ed,eb);}while(bt_h()==true) sum-=findflow(st,999999999);printf("%d\n",sum);return 0;
}

转载于:https://www.cnblogs.com/Never-mind/p/8636914.html

BZOJ3511: 土地划分相关推荐

  1. BZOJ 3511 土地划分

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3511 题目分析: 看上去和前面的人员雇佣以及小M种田都很像. 最小割模型来求最大值,一般都 ...

  2. 计算机网络原理超详解说

    计算机网络原理超详解说 前言 大家好,我是泰斗贤若如,一个专注于用大白话讲解技术的号主,这次给大家分享计算机网络原理的相关知识,我自认为文章内容已经很通俗易懂了,祝您阅读愉快! 一.计算机网络概述 时 ...

  3. linux下watch常见用法,watch命令详解(linux)

    fzu 1015 土地划分(判断线段相交+求出交点+找规律) 链接:http://acm.fzu.edu.cn/problem.php?pid=1015  Problem 1015 土地划分 Acce ...

  4. 《CSS新世界》读书笔记

    前言 本文为<CSS新世界>的读书笔记.推荐去读原著. <CSS新世界>微信读书APP链接:CSS新世界-张鑫旭-微信读书 (qq.com) 1. 尺寸属性值:fit-cont ...

  5. 8000 字深度长文!B端数据可视化设计指南(信息图表篇)

    作者:核糖Bro(转载已取得作者授权) 在如今的工作中(尤其是 B 端)越来越多的会开始出现数据可视化的身影,对于一部分小伙伴来说这个概念是较为陌生的,面对这道无形之中提升的"门槛" ...

  6. Linux之基础IO

    目录 一.回顾C文件接口 向文件中写入w 向文件中读取r 向文件中读取追加a 输出信息到显示器 stdin & stdout & stderr C++版本的文件操作演示: 二.系统调用 ...

  7. [kuangbin带你飞]专题1

    专题一 简单搜索 POJ 1321 棋盘问题 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大 ...

  8. Henry捡钱_DP

    Henry捡钱 (money.pas/c/cpp) 来源:Dream Team邀请赛 [问题描述] 最近,Henry由于失恋(被某大牛甩掉!)心情很是郁闷.所以,他去了大牛家,寻求Michael大牛的 ...

  9. [Dream Team邀请赛]----Money Henry拣钱

    数据最后来-我先写题解 Henry拣钱(money.pas/c/cpp) 背景描述: 最近,Henry 由于失恋(被某大牛甩掉!)心情很是郁闷.所以,他去了大牛家,寻求 Michael 大 牛的帮助, ...

最新文章

  1. 简单的XML和JSON数据的处理
  2. (视频+图文)机器学习入门系列-第13章 降维
  3. asp.net跨页面传值收集
  4. 【渝粤题库】国家开放大学2021春2247社会工作政策法规题目
  5. 大数据技术之kafka (第 3 章 Kafka 架构深入 ) offset讲解
  6. Linux中的报错命令,Linux学习教程-Linux下命令的一些异常情况
  7. java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)的方法
  8. python generator object_python - 将生成器对象转换为列表以进行调试
  9. 2013元旦成都九寨沟攻略
  10. Ubuntu18.04 wineQQ完美配置(解决不能输入中文、不能加载头像和图片、企鹅图标不能进入托盘任务栏等问题,附deepin-wine、微信、QQ安装包网盘链接)
  11. 卸载vuecli3_针对遇到安装或卸载vue-cli失败的解决方案
  12. Android键盘删除键问题
  13. java从键盘输入若干学生的成绩_初学Java3:数组-从键盘录入若干学生的成绩,计算平均值,最大值,最小值...
  14. 两台计算机如何传输数据,详解两台电脑直连传输数据方法
  15. Spring-Aop及jdbc总结
  16. 树莓派数据上传数据库_树莓派内部数据向domoticz的上传
  17. PyCharm中文版(无需汉化包,一键设置)
  18. 方法: 跳转App Store更新你应用的URL究竟该怎么写
  19. 【捡米通】网络赚钱,钱死磕才是王道!
  20. default.asp html,ASP.NET Core 设置默认起始页(如default.html)

热门文章

  1. 唐山师范学院计算机考试,[河北]唐山师范学院2017年3月计算机一级考试报名时间...
  2. 网络技巧:WiFi越用越慢,到底是什么原因,看完你就明白了!
  3. Linux文件操作实用笔记
  4. 全面了解HTTP和HTTPS(开发人员必备)
  5. linux中的fork方法(python)
  6. iofd:文件描述符_文字很重要:谈论设计时18个有意义的描述符
  7. JavaScript递归应用与实践
  8. vim编辑器的使用--转自MJ学长
  9. Wget用法、参数解释的比较好的一个文章
  10. 转载 maven 详解 http://www.cnblogs.com/binyue/p/4729134.html