BZOJ3511: 土地划分
【传送门: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: 土地划分相关推荐
- BZOJ 3511 土地划分
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3511 题目分析: 看上去和前面的人员雇佣以及小M种田都很像. 最小割模型来求最大值,一般都 ...
- 计算机网络原理超详解说
计算机网络原理超详解说 前言 大家好,我是泰斗贤若如,一个专注于用大白话讲解技术的号主,这次给大家分享计算机网络原理的相关知识,我自认为文章内容已经很通俗易懂了,祝您阅读愉快! 一.计算机网络概述 时 ...
- linux下watch常见用法,watch命令详解(linux)
fzu 1015 土地划分(判断线段相交+求出交点+找规律) 链接:http://acm.fzu.edu.cn/problem.php?pid=1015 Problem 1015 土地划分 Acce ...
- 《CSS新世界》读书笔记
前言 本文为<CSS新世界>的读书笔记.推荐去读原著. <CSS新世界>微信读书APP链接:CSS新世界-张鑫旭-微信读书 (qq.com) 1. 尺寸属性值:fit-cont ...
- 8000 字深度长文!B端数据可视化设计指南(信息图表篇)
作者:核糖Bro(转载已取得作者授权) 在如今的工作中(尤其是 B 端)越来越多的会开始出现数据可视化的身影,对于一部分小伙伴来说这个概念是较为陌生的,面对这道无形之中提升的"门槛" ...
- Linux之基础IO
目录 一.回顾C文件接口 向文件中写入w 向文件中读取r 向文件中读取追加a 输出信息到显示器 stdin & stdout & stderr C++版本的文件操作演示: 二.系统调用 ...
- [kuangbin带你飞]专题1
专题一 简单搜索 POJ 1321 棋盘问题 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大 ...
- Henry捡钱_DP
Henry捡钱 (money.pas/c/cpp) 来源:Dream Team邀请赛 [问题描述] 最近,Henry由于失恋(被某大牛甩掉!)心情很是郁闷.所以,他去了大牛家,寻求Michael大牛的 ...
- [Dream Team邀请赛]----Money Henry拣钱
数据最后来-我先写题解 Henry拣钱(money.pas/c/cpp) 背景描述: 最近,Henry 由于失恋(被某大牛甩掉!)心情很是郁闷.所以,他去了大牛家,寻求 Michael 大 牛的帮助, ...
最新文章
- 简单的XML和JSON数据的处理
- (视频+图文)机器学习入门系列-第13章 降维
- asp.net跨页面传值收集
- 【渝粤题库】国家开放大学2021春2247社会工作政策法规题目
- 大数据技术之kafka (第 3 章 Kafka 架构深入 ) offset讲解
- Linux中的报错命令,Linux学习教程-Linux下命令的一些异常情况
- java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)的方法
- python generator object_python - 将生成器对象转换为列表以进行调试
- 2013元旦成都九寨沟攻略
- Ubuntu18.04 wineQQ完美配置(解决不能输入中文、不能加载头像和图片、企鹅图标不能进入托盘任务栏等问题,附deepin-wine、微信、QQ安装包网盘链接)
- 卸载vuecli3_针对遇到安装或卸载vue-cli失败的解决方案
- Android键盘删除键问题
- java从键盘输入若干学生的成绩_初学Java3:数组-从键盘录入若干学生的成绩,计算平均值,最大值,最小值...
- 两台计算机如何传输数据,详解两台电脑直连传输数据方法
- Spring-Aop及jdbc总结
- 树莓派数据上传数据库_树莓派内部数据向domoticz的上传
- PyCharm中文版(无需汉化包,一键设置)
- 方法: 跳转App Store更新你应用的URL究竟该怎么写
- 【捡米通】网络赚钱,钱死磕才是王道!
- default.asp html,ASP.NET Core 设置默认起始页(如default.html)
热门文章
- 唐山师范学院计算机考试,[河北]唐山师范学院2017年3月计算机一级考试报名时间...
- 网络技巧:WiFi越用越慢,到底是什么原因,看完你就明白了!
- Linux文件操作实用笔记
- 全面了解HTTP和HTTPS(开发人员必备)
- linux中的fork方法(python)
- iofd:文件描述符_文字很重要:谈论设计时18个有意义的描述符
- JavaScript递归应用与实践
- vim编辑器的使用--转自MJ学长
- Wget用法、参数解释的比较好的一个文章
- 转载 maven 详解 http://www.cnblogs.com/binyue/p/4729134.html