分析:非常非常好的一道题!

首先需要对问题进行转化:

  1. 行列无关,对于行单独处理,对于列单独处理
  2. 必然存在一个最优方案使得每一个新站与旧站重合.

转化1很显然,对于转化2,是一类非常经典的“中位数问题”,即在一条线段上,有若干个特殊点,要选择一个点的位置,使得它到这些点距离*对应权值的和最小. 结论就是这个点一定在给定的这些点的位置上.

那么问题可以变成,m个位置,每个有n种选择,代价即为其与旧站的传输代价和。不同位置间的选择也会带来代价.

首先假设我们不知道这道题要用网络流来做. dp? Emm,这怎么设计状态啊,要状压吗? 明显压不下. 贪心,肯定不行. 这道题涉及到“匹配”,自然就是网络流咯.

费用流可以吗?显然是不行的,旧站与新站之间的费用很好处理,但是新站与新站之间的费用不好处理.

那就只有是最大流咯. 用流量表示费用?这怎么表示啊......

那么锁定方法--最小割!

每个位置有多种选择,注意到这句话,可以往两个方面去想:

  1. 把选择看作点.
  2. 将每个位置拆成选择个数个点.

本题如果要用最小割显然不能用第一种方法.因为选择与选择之间不好处理,那么就用第二种方法.

上面所画的就是建图方式.具体说来,就是S连向每个点拆出来的第一个点,容量为inf,每个点拆出来的最后一个点连向T,容量为inf.

对于第i个点拆出的第k个点连向第i个点拆出的第k+1个点,容量为第i个新站建在第k个旧站的代价.

对于第i个点拆出的第k个点连向第j个点拆出的第k个点,容量为b_ij.

下面来分析一下建图:

割掉第i个点拆出来的点实际上就是确定了第i个新站的位置. 如上图所示,如果同时割掉两条红色的边,为了使得S,T不连通,必然会割掉两条绿色的边. 如果i的选择是pi,j的选择是pj,一共会割掉 |pi - pj|条绿边,正好就是新站i,j之间的代价.

至此这道题就做完了.

一点感想:最小割为了使得ST不连通,一次能够割掉很多条边.如果网络流的题要求很多的贡献(两两之间的).尝试用最小割?

ctsc2009 移民站选址的更多相关文章

  1. 【转】城市CORS系统建设

    随着GPS技术的飞速进步和应用普及,它在城市测量中的作用已越来越重要.当前,利用多基站网络RTK技术建立的连续运行卫星定位服务综合系统(Continuous Operational Reference ...

  2. 【自编教材】16万8千字的HTML+CSS基础 适合从0到1-可收藏

    [图片链接有点小问题,这几天更新,敬请期待!] 目 录 第一章HTML基础 1.1 HTML简介和发展史 1.1.1 什么是HTML 1.1.2 HTML的发展历程 1.1.3 web标准 1.2 开 ...

  3. zz《百度地图商业选址》

    作者 | 阚长城 编辑 | 张慧芳 题图 | 站酷海阔 人类几千年的文明催生了城市的发展,计算机与复杂科学带给我们新的资源——大数据.罗马非一日建成,人力和时间成本极大,但试想一下,如果有了大数据,罗 ...

  4. Python小白的数学建模课-07 选址问题

    选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型. 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型. 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法. ...

  5. 用Taurus.MVC 做个企业站(下)

    前言: 上一篇完成了首页,这一篇就把剩下的几个功能给作了吧. 包括文章列表.文章详情和产品展示. 1:文章列表: 原来的ArticleList.aspx 1:现在的articlelist.html 除 ...

  6. 用Taurus.MVC 做个企业站(上)

    前言: 之前是打算写一篇文章叫:Taurus.MVC 从入门到精通,一篇完事篇! 后来转指一念,还是把教程集在这个企业站项目上吧!!! 企业站风格: 之前发过一个帮师妹写的企业站:最近花了几个夜晚帮师 ...

  7. 一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  8. 站在风口,你或许就是那年薪20w+的程序猿

    最近面试了一些人,也在群上跟一些群友聊起,发现现在的互联网真是热,一些工作才两三年的期望的薪资都是十几K的起,这真是让我们这些早几年就成为程序猿的情何以堪!正所谓是站在风口上,猪也能飞起来!我在这里就 ...

  9. C站投稿189网盘视频源(UP主篇)

    C站投稿189网盘视频源(UP主篇) 现在C站(吐槽弹幕网)的视频来源基本靠的都是189网盘,比如番剧区的每个视频基本来源于此,不像AB两站,拥有自己的资源服务器,为啥呢?没钱啊.都是外来的视频.本站 ...

随机推荐

  1. Elasticsearch.Net 异常:[match] query doesn't support multiple fields, found [field] and [query]

    用Elasticsearch.Net检索数据,报异常: )); ElasticLowLevelClient client = new ElasticLowLevelClient(settings); ...

  2. eBay:美国各州最受欢迎的产品品类

    雨果网从美国媒体<商业内幕>8月26日的报道中获悉,电商巨头eBay近日发布了美国各州最受欢迎的产品品类.包括:加州人青睐女性高端配件,而新泽西 州的男人喜欢古龙香水.相比这些华丽配饰而言 ...

  3. Spark Streaming的使用——转载

    转载自   Spark Streaming 使用

  4. 大前端全栈CSS3移动端开发

    作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正 本节课学习视频来源:https://ww ...

  5. mysql数据库查询

    查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...

  6. python 中如何计算时间差...

    Q:如何方便的计算两个时间的差,如两个时间相差几天,几小时等 A:使用datetime模块可以很方便的解决这个问题,举例如下: >>> import datetime>> ...

  7. Log4Net的使用研究(一)

    等待研究中………… 20160421 标题:C#使用Log4Net记录日志   文章地址: http://www.cnblogs.com/wangsaiming/archive/2013/01/11/ ...

  8. Linux系统中增加swap空间大小

    在我的树莓派pi3上编译dlib库时,发现由于内存不足导致编译失败.树莓派是1G内存,swap只有50M,因此将swap增加到500M,编译通过.具体设置方法如下: 使用free命令带上m参数,查看s ...

  9. C++ auto_ptr智能指针的用法

    C++中指针申请和释放内存通常采用的方式是new和delete.然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存.下面简单说一下用法. 用法一: std: ...

  10. 1029对c语言文法的理解

    <程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...