BZOJ 3511 土地划分

AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3511

 

题目分析:

  看上去和前面的人员雇佣以及小M种田都很像。

  最小割模型来求最大值,一般都是考虑怎样构图使得满足一个组合能被表示出来,而且当满足一个组合的时候,能产生或失去所需的效益。[割掉的是不要的]

  我们将s与1相连,连为INF,这样就不会被割,n向t连边,同理。

  因为1和n会有边连接,所以我们才多建出了节点s,t。

  然后对于每个点i,s向i连wa[i],i向t连wb[i],这样就满足了第一条性质。

  对于ea,eb,ec的弄法,我们就先从s向u和向v连ea/2,从u和v向t连eb/2,然后在uv之间连一条双向的ea/2+eb/2+ec的边。

  这样连边就能满足第二条性质了,反正就是脑补一下各种割法,就发现它奥妙重重,十分正确。

  然后可以缩一下边,把s->i的边集以及i->t的合并一下[优化一下常数]。

 

#include<cstdio>
#include<cstring>
#include<algorithm>using namespace std;const int maxn=10010;
const int maxm=40010;
const int INF=0x3f3f3f3f;struct Node{int data,next,low; 
}node[maxm*2+maxn*4];#define now node[point].data
#define www node[point].low
#define then node[point].nextint n,m,cnt;
int s,t,ans;
int wa[maxn],wb[maxn];
int stoi[maxn],itot[maxn];
int cur[maxn],head[maxn];
int dis[maxn],que[maxn];void add(int u,int v,int w){node[cnt].data=v;node[cnt].next=head[u];node[cnt].low=w;head[u]=cnt++;node[cnt].data=u;node[cnt].next=head[v];node[cnt].low=0;head[v]=cnt++;
}void add2(int u,int v,int w){node[cnt].data=v;node[cnt].next=head[u];node[cnt].low=w;head[u]=cnt++;node[cnt].data=u;node[cnt].next=head[v];node[cnt].low=w;head[v]=cnt++;
}bool BFS(){memset(dis,-1,sizeof(dis));int H=0,T=1;que[1]=s;dis[s]=0;while(H<T){H++;for(int point=head[que[H]];point!=-1;point=then)if(www && dis[now]<0){dis[now]=dis[que[H]]+1;que[++T]=now;}}return dis[t]>0;
}int dfs(int x,int low){if(x==t) return low;int Low;for(int &point=cur[x];point!=-1;point=then)if(www && dis[now]==dis[x]+1){Low=dfs(now,min(low,www));if(Low){www-=Low,node[point^1].low+=Low;return Low;}}return 0;
}int main(){
#ifndef ONLINE_JUDGEfreopen("3511.in","r",stdin);freopen("3511.out","w",stdout);
#endifint u,v,Ea,Eb,Ec;scanf("%d%d",&n,&m);t=n+1;for(int i=s;i<=t;i++) head[i]=-1;for(int i=2;i<n;i++) scanf("%d",&wa[i]),stoi[i]+=(wa[i]<<1);for(int i=2;i<n;i++) scanf("%d",&wb[i]),itot[i]+=(wb[i]<<1);for(int i=1;i<=m;i++){scanf("%d%d%d%d%d",&u,&v,&Ea,&Eb,&Ec);add2(u,v,Ea+Eb+(Ec<<1));stoi[u]+=Ea,stoi[v]+=Ea;itot[u]+=Eb,itot[v]+=Eb;}for(int i=1;i<=n;i++)ans+=stoi[i]+itot[i];stoi[1]=itot[n]=INF;for(int i=1;i<=n;i++)add(s,i,stoi[i]),add(i,t,itot[i]);int flag;while(BFS()){memcpy(cur,head,sizeof(head));while(flag=dfs(s,INF))ans-=flag;}ans>>=1;printf("%d",ans);return 0;
}
View Code

 

转载于:https://www.cnblogs.com/Robert-Yuan/p/5223274.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyEclipes+html+jsp+mysql实现一个物流信息网

导读:该系统使用java语言开发,使系统具有更好的平台性和可扩展性。 该系统实现了用户登录、注册、查询快递信息、快递公司注册成为合作伙伴以及系统管理员对信息进行管理等功能。系统的主要界面会将所有的服务排列好,用户可以自行选择服务。用户可以查询快递的详细信息以…

MyEclipes+JSP+tomcat+MySQL实现JavaEE平台项目管理系统

导读:随着社会信息化的发展,很多的社会管理问题也一并出现了根本性变化,项目公司的报表及文件管理也发生了变化,以前的管理是一个分布式的信息,然后围绕中心由通过简单的来传输信息,这使得办事效率非常低下,所以需要需要适用信息货的发展,开发一套项目的管理信息系统。…

Myesclipe+SSH+jsp+mysql+tomcate实现一个简单的CRM客户关系管理系统

导读: CRM客户关系管理系统的目的通过客户管理,产品管理,系统管理等功能同客户建立联并收集客户信息,此基础上满足客户"一对一"个性化服务。同时信息在企业的流程上得以流转,让客户得到高效的,满意的服务。本系统包括信息管理、客户管理、产品管理等多项功能。…

adf平稳性检测_ADF声明性组件示例

adf平稳性检测在我以前的文章中&#xff0c;我答应展示如何为智能值列表创建ADF声明性组件。 因此&#xff0c;我将创建一个包含三个元素的组件&#xff1a;标签&#xff0c;输入文本和值的组合框列表。 那很容易。 我在工作空间中创建了一个单独的ADF ViewController项目&…

JSP+Tomcat+SQL Server 2000+JDBC实现合同信息管理系统

导读:随着信息科学技术的飞速发展,人们逐渐意识到对信息管理软件的运用可以使日常工作更加方便、快捷和高效。论文详细论述了公司合同管理系统的开发设计过程。软件采用JSP开发技术,Tomcat作容器, SQL Server 2000作数据库管理系统,实现了创建合同、修改合同、删除合同、合…

JSP+JDBC+XML+mysql实现企业电子投票系统

导读:企业电子投票系统主要用来统计网站用户对某个主题或热门话题的意见。决策者通过这些统计数据做出相应的决策。企业电子投票系统是一般网站必备的程序之一,如果网站开发者想了解用户对该网站的意见和建议。他可以设计这样一个投票主题:你认为该网站如何?(A.很好 B.一般…

matlab 无向拓扑图,无向图绘画树状拓扑图算法

基于目前Network项目需要&#xff0c;研究相关树形算法该需求难点如下&#xff1a;1、目前拓扑图是无向图&#xff0c;而树大多数都是基于有向图来画的&#xff0c;无法确定根节点2、网络拓扑中存在回环问题&#xff0c;导致链路可能会存在重叠问题针对问题1&#xff0c;目前根…

Java Mail+MYSQL+Tomcate+jsp实现企业快信系统

导读:首先对企业快信的开发进行了较深入的研究,然后对短信发送与邮件发送原理进行了介绍,接下来对系统的概要设计、功能模块、数据库设计,以及名片夹管理功能与邮件发送功能的具体实现作了细致阐述,最后是系统效果的展示。企业快信系统是一个集短信与邮件为一体的移动商务…

odbc连接oracle失败,大神解答win7系统ODBC无法连接ORACLE的处理方案

随着电脑的使用率越来越高&#xff0c;我们有时候可能会遇到win7系统ODBC无法连接ORACLE问题&#xff0c;如果我们遇到了win7系统ODBC无法连接ORACLE的问题&#xff0c;要怎么处理win7系统ODBC无法连接ORACLE呢&#xff1f;我们只用1)操作系统是Win7 x64&#xff0c;客户端是Or…

spring-mvc教程_使用MVC模式制作游戏-教程和简介

spring-mvc教程游戏开发中一种有用的体系结构模式是MVC&#xff08;模型视图控制器&#xff09;模式。 它有助于分离输入逻辑&#xff0c;游戏逻辑和UI&#xff08;渲染&#xff09;。 在任何游戏开发项目的早期阶段&#xff0c;它的用途很快就会被注意到&#xff0c;因为它可以…

web前端开发需要学什么(包含前端学习路线)

前端开发&#xff0c;做到后面&#xff0c;是可以走很多方向的&#xff1b;但是要保证后期的平滑过度&#xff0c;前期还是要把一些必须的知识搞扎实的&#xff1b;web前端开发需要学什么环境搭建前端环境很好搭建&#xff0c;编辑器浏览器即可。浏览器推荐使用 Chrome行业内主…

2015年必火的五个Html5移动开发工具推荐

NO.1 DCloudHBuilder:基于HTML5开发工具 中文官网&#xff1a;http://www.dcloud.io/ DCloudHBuilder:基于HTML5开发工具是当前最快的HTML开发工具&#xff0c;强大的代码助手帮你快速完成开发&#xff0c;最全的语法库和浏览器兼容 性数据让浏览器碎片化不再头痛&#xff0c…

想当程序员,如何判断自己是否适合当前端程序员?

说在前面&#xff1a;有粉丝提问说自己并不确定学前端&#xff0c;因为自己还没有工作&#xff0c;想做程序员&#xff0c;想问问做哪个方向比较有前途&#xff1b; 有两三个小伙伴这么问的&#xff0c;感觉很有意义&#xff0c;拿出来单独说说比较好。 目录 程序员有哪些选择&…

个税社保

资料来源&#xff1a;http://finance.qq.com/cross/20160218/H9cM96A8.html?pgv_refaio2015&ptlang2052转载于:https://www.cnblogs.com/weikang/p/5200832.html

前端程序员如何选择适合自己的培训机构

web前端开发培训哪家好这个主要是根据自己的情况来选择&#xff0c;本篇文章主要分享怎么选择适合自己的培训机构市场上有哪些培训机构以及所在位置既然关心哪家培训机构好&#xff0c;基本都是有报班学习的意向&#xff0c;所以就不多说自学和报班的区别了&#xff1b;我是不排…

altium designer 10哪个作者写的好 。

问题截图&#xff1a; 博主解答&#xff1a; 其实这种书籍基本内容都差不多&#xff0c;很多都是作者来回借鉴&#xff0c;我们能根据自己的需要学到知识即可。

新浪微博开发-添加子视图控制器设置颜色

一.添加子视图控制器 二.设置颜色 设置颜色&#xff1a;两种方法 一种较为繁琐&#xff0c;详见视频 第二种&#xff1a; //设置颜色 self.tabBar.tintColor UIColor.orangeColor()转载于:https://www.cnblogs.com/torrescx/p/5237142.html

Android studio的sdk tools下没有LLDB的解决办法

粉丝提问&#xff1a; 博主解答: 解决办法&#xff1a; 点击setting--》plugins--》找到“Android Support”选项&#xff0c;并勾选&#xff0c;然后会提示重启android studio &#xff0c;点击重启&#xff0c;ok&#xff0c;如果已经设置好SDK的路径的话&#xff0c;问题解…

随机JCache内容:多个提供程序和JMX Bean

JCache&#xff08;JSR 107&#xff09;是用于缓存的Java标准…足够了。 没有更多介绍性的东西。 这是一则速成文章&#xff0c;内容涉及 多个JCache提供程序配置&#xff0c;以及 功能&#xff1a;通过JMX Mbeans的JCache统计信息 管理多个JCache提供程序 如果您只使用一个…

linux下spi添加设备,Linux Kernl添加spidev的设备节点

一、spidev介绍如果在内核中配置spidev&#xff0c;会在/dev目录下产生设备节点&#xff0c;通过此节点可以操作挂载在该SPI总线上的设备。用户空间通过该节点可以访问内核空间。二、配置spidev设备步骤在i.MX6&#xff0c;Kernel 4.1.15上配置spidev的支持。1、配置dts支持spi…