题目大意: 关键词:最小费用最大流 不相交路径 如果两个线段重叠了,那我们则把一个线段放在下一层,另一个线段放在上一层.把流量为1的流看作一条线,一条线把位于同一层的线段(互不重叠)都串了起来.最多有k层,则总流量最多为k.问题变成了:每条线如何串串出的线段的长度总和最大? 构图思路1:同一层每一线段都有可能是该层的第一个线段或是该层的最后一个线段.每个位于该线段后面的.不与该线段重合的线段,都是该线段潜在的同一层的下一个线段.因此连接s与每个区间的左端点.每个区间的右端点和T,每个区间的右端点…
743. [网络流24题] 最长k可重区间集 ★★★   输入文件:interv.in   输出文件:interv.out   简单对比时间限制:1 s   内存限制:128 MB «问题描述: «编程任务: 对于给定的开区间集合I和正整数k,计算开区间集合I的最长k可重区间集的长度. «数据输入: 由文件interv.in提供输入数据.文件的第1 行有2 个正整数n和k,分别表示开区间的 个数和开区间的可重迭数.接下来的n行,每行有2个整数,表示开区间的左右端点坐标. «结果输出: 程序运行结…
[] 输入文件示例input.txt4 21 76 87 109 13 输出文件示例output.txt15 [分析] 直接co题解好了,写得挺全.. [建模方法] 方法1 按左端点排序所有区间,把每个区间拆分看做两个顶点<i.a><i.b>,建立附加源S汇T,以及附加顶点S'. 1.连接S到S'一条容量为K,费用为0的有向边.2.从S'到每个<i.a>连接一条容量为1,费用为0的有向边.3.从每个<i.b>到T连接一条容量为1,费用为0的有向边.4.从每个…
最长k可重区间集问题 题目链接 https://www.luogu.org/problemnew/show/3358 做法 所有点向下一个点连容量为k费用为0的边 l和r连容量为1费用为区间长度的边 然后跑最大流最大费用流 (最大费用就是把边权取相反数跑最小费用 最后再输出最终费用的相反数) 思考 在整张图中,只有l - >r的边有费用 而且费用为区间长度 (i->i+1费用为0) 所以跑最大费用也就是求最长区间 #include <algorithm> #include <…
[网络流24题]最长k可重区间集(费用流) 题面 Cogs Loj 洛谷 题解 首先注意一下 这道题目里面 在Cogs上直接做就行了 洛谷和Loj上需要判断数据合法,如果\(l>r\)就要交换\(l,r\) 首先离散化 数据范围比较大 记录一下\(l,r\)和区间大小 这个问题可以换一种看法 相当于从源点出发,走K次, 问你路径的最大权值和 其中有些边可以无限制的走,但是它们的长度为0 所以从源点开始到汇点,挂出一条链来 容量为K,费用为0 这些路是可以随便走的 另外,还有若干个区间 但是每个只…
题面戳我 题目描述 对于给定的开区间集合I和正整数k,计算开区间集合I的最长k可重区间集的长度. 输入格式: 的第 1 行有 2 个正整数n和k,分别表示开区间的个数和开区间的可重迭数.接下来的 n行,每行有 2 个整数,表示开区间的左右端点坐标. 输出格式: 将计算出的最长 k可重区间集的长度输出 输入输出样例 输入样例#1: 4 2 1 7 6 8 7 10 9 13 输出样例#1: 15 说明 对于100%的数据,1≤n≤500,1≤k≤3 sol 费用流建图 先把点离散化掉 对于剩下的至…
P3358 最长k可重区间集问题 题目描述 对于给定的开区间集合 I 和正整数 k,计算开区间集合 I 的最长 k可重区间集的长度. 输入输出格式 输入格式: 的第 1 行有 2 个正整数 n和 k,分别表示开区间的个数和开区间的可重迭数.接下来的 n行,每行有 2 个整数,表示开区间的左右端点坐标. 输出格式: 将计算出的最长 k可重区间集的长度输出 输入输出样例 输入样例#1: 复制 4 2 1 7 6 8 7 10 9 13 输出样例#1: 复制 15 说明 对于100%的数据,1\le…
#6014. 「网络流 24 题」最长 k 可重区间集 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 给定实直线 L LL 上 n nn 个开区间组成的集合 I II,和一个正整数 k kk,试设计一个算法,从开区间集合 I II 中选取出开区间集合 S⊆I S \subseteq IS⊆I,使得在实直线 L LL 的任何一点 x xx,S SS 中包含点 x xx 的开区间个数不超过 …
题目描述 给定实直线 \(L\) 上 \(n\) 个开区间组成的集合 \(I\) ,和一个正整数 \(k\) ,试设计一个算法,从开区间集合 \(I\) 中选取出开区间集合 \(S \subseteq I\) ,使得在实直线 \(L\) 的任何一点 \(x\) ,\(S\) 中包含点 \(x\) 的开区间个数不超过 \(k\) .且 \(\sum\limits_{z \in S} | z |\) 达到最大.这样的集合 \(S\) 称为开区间集合 \(I\) 的最长 \(k\) 可重区间集.\(\…
https://www.luogu.org/problemnew/show/3358 以区间(1,5),(2,6),(7,8)为例 建模方法一: 建模方法二: 离散化区间端点 相当于找k条费用最大的不相交路径 #include<queue> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define N…