超神的建模,极其有借鉴意义/cy

注:该建模对应于最小割建模

对于 \(n\) 个数,每个数有 \(m\) 种取值的技巧

\(\forall i=1,2,\dots,n\),令 \(S=V_{i,0}\rightarrow V_{i,1}\rightarrow \dots \rightarrow V_{i,m}=T\),也就是形成 \(n\) 条链。

此时,\(i\) 取值 \(j\) 时对应着切断边 \(V_{i,j-1}\rightarrow V_{i,j}\),因此这条边可以附上权值 \(c_{i,j}\)。

注意,这时候我们还要连一条 \(V_{i,j}\rightarrow V_{i,j-1}\) 的边,边权为 \(+\infty\)。理由如下:

我们会发现上面那条链断了 3 条边,由于有其它边的介入,左边跑到 \(T\) 一边了,右边跑到 \(S\) 一边了,这显然不符合我们的期望。

而加上无穷大的边后————

发现 \(S\) 和 \(T\) 连通了,显然与最小割不符。于是可以保证每条链左边属于 \(S\),右边属于 \(T\)。

另外,如果一条链断了 3 条边,则 3 条小链中必有两个同属于 \(S\) 或 \(T\),它们之间的边就没必要断了,与最小性不符。

至此,我们可以保证每条链恰好断一条边,其代价对应于选相应元素的代价,且左边属于 \(S\),右边属于 \(T\)。

处理不同数所选值之间关系的技巧

本题中要求对于数 \(i\) 和 \(j\),会产生 \(|x_i-x_j|\cdot W_{i,j}\) 的代价。

不妨设 \(x_i<x_j\)(反之类似),则代价即为 \(\sum\limits_a [x_i\le a<x_j] W_{i,j}\)。

于是考虑对每个 \(a\) 连一条代价为 \(W_{i,j}\) 的边。

对 \(x_i,x_j\) 进行归并排序,则相邻两个数之间的 \(a\) 可以合并,于是只有 \(O(m)\) 条边。

举一个 \(x_i\le a<x_j\) 的例子:

可以看到图中 \(x_2<y_3\),即 \(x_2\le a<y_3\),此时上面那条链可以切蓝色的边,下面那条链可以切紫色的边,于是此时是从 \(y_2\) 向 \(x_2\) 连一条边,边权为 \(y_3-x_2\)。

注意一下谁往谁连边即可,注意权值差也有可能是 \(x_k-x_{k-1}\),需要取一个 \(\max\)。

ARC129E Yet Another Minimization 题解 【网络流笔记】的更多相关文章

  1. [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码

    [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码 更坏的阅读体验 定义 对于给定的一个网络,有向图中每个的边权表示可以通过的最大流量.假设出发点S水流无限大,求水流到终点T后的最大流量. 起 ...

  2. 网络流$1$·简单的$EK$与$Dinic~of~Net-work ~ Flow$学习笔记

    \(2333\)这是好久之前学的了,不过一直在咕咕咕咕. 一般来讲,正常的网络流笔记一开始都是要给网络流图下定义的.那么我们不妨也来先进行一波这种操作. 那么网络流图,类似于有向图,边上带权,但是这个 ...

  3. 【网络流】POJ1273 Drainage Ditches

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 78671   Accepted: 3068 ...

  4. 【BZOJ1001】狼抓兔子(网络流)

    [BZOJ1001]狼抓兔子(网络流) 题面 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨, ...

  5. 【Luogu1345】奶牛的电信(网络流)

    [Luogu1345]奶牛的电信(网络流) 题面 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成 ...

  6. 【BZOJ3931】【CQOI2015】网络吞吐量(最短路,网络流)

    [BZOJ3931][CQOI2015]网络吞吐量(最短路,网络流) 题面 跑到BZOJ上去看把 题解 网络流模板题??? SPFA跑出最短路,重新建边后 直接Dinic就行了 大火题嗷... #in ...

  7. TZOJ 2099 Sightseeing tour(网络流判混合图欧拉回路)

    描述 The city executive board in Lund wants to construct a sightseeing tour by bus in Lund, so that to ...

  8. 【bzoj3774】最优选择 网络流最小割

    题目描述 小N手上有一个N*M的方格图,控制某一个点要付出Aij的代价,然后某个点如果被控制了,或者他周围的所有点(上下左右)都被控制了,那么他就算是被选择了的.一个点如果被选择了,那么可以得到Bij ...

  9. 【BZOJ1458】【洛谷4311】士兵占领(网络流)

    [BZOJ1458][洛谷4311]士兵占领(网络流) 题面 BZOJ权限题,洛谷真好 Description 有一个M * N的棋盘,有的格子是障碍.现在你要选择一些格子来放置一些士兵,一个格子里最 ...

随机推荐

  1. 随笔总结:8086CPU的栈顶超界问题

    我们学习编程都知道栈的超界限问题是非常严重的问题,他可能会覆盖掉其他数据,并且我们不知道这个数据是我们自己保存的用于其他用途的数据还是系统的数据,这样常常容易引发一连串的问题. 在学习汇编的时候,我们 ...

  2. 【Java面试】简述一下你对线程池的理解?

    到底是什么面试题, 让一个工作了4年的精神小伙,只是去参加了一场技术面试, 就被搞得精神萎靡.郁郁寡欢! 这一切的背后到底是道德的沦丧,还是人性的扭曲. 让我们一起揭秘一下这道面试题. 关于, &qu ...

  3. JS倒计时(刷新页面不影响)的实现思路

    最近在做一个项目,用到了点击按钮实现倒计时,这个用js来实现很简单.但是遇到了一个问题 页面刷新后js重新加载导致 倒计时重新开始,或者直接初始化了 后来通过 cookie 保存来实现了js倒计时,关 ...

  4. 【Windbg】记一次线程卡主的问题

    测试告诉我们定时任务没有执行了,排查相关日志,只有开始执行,没有执行结束.估计是什么地方卡主了. 所以dump分析日志 先检查一下加载情况 !eeversion 线程卡主了,先看线程 !runaway ...

  5. 两个月吃透阿里P9推荐260页SpringBoot2企业应用实战pdf入职定P6+

    前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...

  6. 第一次的ssm整合

    数据库表 导入依赖 <dependencies> <dependency> <groupId>javax.servlet</groupId> <a ...

  7. 分布式机器学习:PageRank算法的并行化实现(PySpark)

    1. PageRank的两种串行迭代求解算法 我们在博客<数值分析:幂迭代和PageRank算法(Numpy实现)>算法中提到过用幂法求解PageRank. 给定有向图 我们可以写出其马尔 ...

  8. conda命令的使用,环境安装,创建环境以Anaconda为例

    Anaconda用命令conda创建环境: 安装Anaconda后,用Conda –version查看conda的版本号: Conda create -n name python = x.xx Con ...

  9. Eureka属性配置

    一:Eureka Instance实例信息配置   里面的配置以"-"隔开 其实也支持驼峰命名代替"-" 首先是入门时的配置: server: port: 80 ...

  10. 在jupyternotebook中写C/C++

    在jupyter notebook中写C/C++,最大的好处就是不用写main()函数,直接调用写好的函数即可执行. #include<stdio.h> int sum(int a,int ...