#6014. 「网络流 24 题」最长 k 可重区间集 题目描述 给定实直线 L LL 上 n nn 个开区间组成的集合 I II,和一个正整数 k kk,试设计一个算法,从开区间集合 I II 中选取出开区间集合 S⊆I S \subseteq IS⊆I,使得在实直线 L LL 的任何一点 x xx,S SS 中包含点 x xx 的开区间个数不超过 k kk.且 ∑z∈S∣z∣ \sum\limits_{z \in S} | z |​z∈S​∑​​∣z∣ 达到最大.这样的集合 S SS 称为开…
题目描述 给定实直线 \(L\) 上 \(n\) 个开区间组成的集合 \(I\) ,和一个正整数 \(k\) ,试设计一个算法,从开区间集合 \(I\) 中选取出开区间集合 \(S \subseteq I\) ,使得在实直线 \(L\) 的任何一点 \(x\) ,\(S\) 中包含点 \(x\) 的开区间个数不超过 \(k\) .且 \(\sum\limits_{z \in S} | z |\) 达到最大.这样的集合 \(S\) 称为开区间集合 \(I\) 的最长 \(k\) 可重区间集.\(\…
#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 的开区间个数不超过 …
题目描述 给定平面 \(\text{xoy}\) 上 \(n\) 个开线段组成的集合 \(\text{I}\) ,和一个正整数 \(k\) ,试设计一个算法. 从开线段集合 \(\text{I}\) 中选取出开线段集合 \(\text{S}\in \text{I}\) , 使得在x轴上的任何一点 \(\text{p}\) , \(\text{S}\) 中与直线 \(\text{x}=\text{p}\) 相交的开线段个数不超过 \(\text{k}\) , 且 \(\sum_{\text{z}…
$n \leq 500$条平面上的线段,问一种挑选方法,使得不存在直线$x=p$与挑选的直线有超过$k$个交点,且选得的直线总长度最长. 横坐标每个点开一个点,一条线段就把对应横坐标连一条容量一费用(-长度)的边:点$x$向点$x+1$连一条容量$k$费用0的边.这里的$k$边限制的是直线上其他不经过这里的地方. 这里有个trick就是有与$x$轴垂直的线段.直接判掉会wa.为此把坐标扩大两倍,如果$l=r$那么$r++$否则$l++$,相当于把一个点拆成两个.…
给定区间集合$I$和正整数$k$, 计算$I$的最长$k$可重区间集的长度. 区间离散化到$[1,2n]$, $S$与$1$连边$(k,0)$, $i$与$i+1$连边$(k,0)$, $2n$与$T$连边$(k,0)$. 对于每个区间$(l,r)$, $l$与$r$连边$(1,l-r)$. 最小费用相反数就为最大长度 #include <iostream> #include <sstream> #include <algorithm> #include <cst…
[网络流24题]最长k可重区间集(费用流) 题面 Cogs Loj 洛谷 题解 首先注意一下 这道题目里面 在Cogs上直接做就行了 洛谷和Loj上需要判断数据合法,如果\(l>r\)就要交换\(l,r\) 首先离散化 数据范围比较大 记录一下\(l,r\)和区间大小 这个问题可以换一种看法 相当于从源点出发,走K次, 问你路径的最大权值和 其中有些边可以无限制的走,但是它们的长度为0 所以从源点开始到汇点,挂出一条链来 容量为K,费用为0 这些路是可以随便走的 另外,还有若干个区间 但是每个只…
[网络流24题]最长k可重区间集问题 [问题分析] 最大权不相交路径问题,可以用最大费用最大流解决. [建模方法] 方法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.从每个顶点<i.a>到<i.b>…
最长 k 可重区间集问题题解: 突然想起这个锅还没补,于是来把这里补一下qwq. 1.题意简述: 有\(n\)个开区间,这\(n\)个开区间组成了一个直线\(L\),要求选择一些区间,使得在直线\(L\)上的任意一点,对于你选择的区间来说,包含这个点的区间个数不超过$k $,且满足区间长度和最大. 2.要点: 因为是开区间,所以长度为\(r-l\) 所用算法为\(EK\)费用流 3.\(solution1 :\) 首先让我们思考这个过程,我们要选择一些区间,那么限制条件是得给在区间上的.考虑这么…
对于每个点向后一个点连流量为k费用为0的边 对每一区间连l到r流量为1费用为r-l的边 然后最小费用最大流,输出取反 一开始写的r-l+1错了半天... By:大奕哥 #include<bits/stdc++.h> using namespace std; ,inf=1e9; ,cost; bool v[N]; struct node{ int to,nex,f,w,c; }e[]; void add(int x,int y,int w,int c) { e[++cnt].to=y;e[cnt…
题意: 思路: [问题分析] 最大权不相交路径问题,可以用最大费用最大流解决. [建模方法] 方法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.从每个顶点<i.a>到<i.b>连接一条容量为1…
[网络流24题]最长k可重线段集(费用流) 题面 Cogs的数据有问题 Loj 洛谷 题解 这道题和最长k可重区间集没有区别 只不过费用额外计算一下 但是,还是有一点要注意的地方 这里可以是一条垂直的直线 所以,首先把所有的x轴全部乘2 如果两个相等就把右端点+1 否则左端点+1 这样就可以解决垂直于x轴的问题了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #…
题目描述 给定正整数序列 \(x_1 \sim x_n\) ,以下递增子序列均为非严格递增. 计算其最长递增子序列的长度 \(s\) . 计算从给定的序列中最多可取出多少个长度为 \(s\) 的递增子序列. 如果允许在取出的序列中多次使用 \(x_1\) 和 \(x_n\) ,则从给定序列中最多可取出多少个长度为 \(s\) 的递增子序列. 输入格式 文件第 \(1\) 行有 \(1\) 个正整数 \(n\) ,表示给定序列的长度.接下来的 \(1\) 行有 \(n\) 个正整数 \(x_1 \…
对于每个线段拆成两个点,如同之前一样建图,由于可能出现垂直于x轴的 所以建图由i指向i~ 继续最小费用最大流 By:大奕哥 #include<bits/stdc++.h> using namespace std; ,inf=1e9; ; long long cost; bool v[N]; struct node{ int to,nex,f,w,c; }e[]; void add(int x,int y,int w,int c) { e[++cnt].to=y;e[cnt].w=w;e[cnt…
[luogu_P1251][LOJ#6008]「网络流 24 题」餐巾计划 试题描述 一个餐厅在相继的 \(N\) 天里,第 \(i\) 天需要 \(R_i\) 块餐巾 \((i=l,2,-,N)\).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需 \(p\) 分: (2)把用过的餐巾送到快洗部,洗一块需 \(m\) 天,费用需 \(f\) 分 \((f<p)\).如 \(m=1\) 时,第一天送到快洗部的餐巾第二天就可以使用了,送慢洗的情况也如此. (3)把餐巾送到慢洗部,洗一块需…
[LOJ#6002]「网络流 24 题」最小路径覆盖 试题描述 给定有向图 G=(V,E).设 P 是 G 的一个简单路(顶点不相交)的集合.如果 V 中每个顶点恰好在 P 的一条路上,则称 P 是 G 的一个路径覆盖.P 中路径可以从 V 的任何一个顶点开始,长度也是任意的,特别地,可以为 0.G 的最小路径覆盖是 G 的所含路径条数最少的路径覆盖. 设计一个有效算法求一个有向无环图 G 的最小路径覆盖. 输入 第 1 行有 2 个正整数 n 和 m.n 是给定有向无环图 G 的顶点数,m 是…
Libre 6005 「网络流 24 题」最长递增子序列 / Luogu 2766 最长递增子序列问题(网络流,最大流) Description 问题描述: 给定正整数序列x1,...,xn . (1)计算其最长递增子序列的长度s. (2)计算从给定的序列中最多可取出多少个长度为s的递增子序列. (3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的递增子序列. 编程任务: 设计有效算法完成(1)(2)(3)提出的计算任务. Input 第1 行有1个正整数n,…
#6013. 「网络流 24 题」负载平衡 题目描述 G 公司有 n nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n nn 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入格式 文件的第 1 11 行中有 1 11 个正整数 n nn,表示有 n nn 个仓库.第 2 22 行中有 n nn 个正整数,表示 n nn 个仓库的库存量. 输出格式 输出最少搬运量. 样例 样例输入 5 17 9 14 16 4 样例输出 11 数据范围与…
#6122. 「网络流 24 题」航空路线问题 题目描述 给定一张航空图,图中顶点代表城市,边代表两个城市间的直通航线.现要求找出一条满足下述限制条件的且途经城市最多的旅行路线. 从最西端城市出发,单向从西向东途经若干城市到达最东端城市,然后再单向从东向西飞回起点(可途经若干城市). 除起点城市外,任何城市只能访问一次. 对于给定的航空图,试设计一个算法找出一条满足要求的最佳航空旅行路线. 输入格式 第一行有两个正整数 NNN 和 VVV,NNN 表示城市数,VVV 表示直飞航线数.接下来的 N…
#6121. 「网络流 24 题」孤岛营救问题   题目描述 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图.迷宫的外形是一个长方形,其南北方向被划分为 nnn 行,东西方向被划分为 mmm 列, 于是整个迷宫被划分为 n×m n \times mn×m 个单元.每一个单元的位置可用一个有序数对 (单元的行号, 单元的列号) 来表示.南北或东西方向相邻的 222 个单元之间可能…
#6226. 「网络流 24 题」骑士共存问题   题目描述 在一个 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入. 对于给定的 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个骑士,使得它们彼此互不攻击. 输入格式 第一行有两个正整数 n\text{n}n 和 m\text{m}m (1≤n≤200,0≤…
#6003. 「网络流 24 题」魔术球 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 假设有 n nn 根柱子,现要按下述规则在这 n nn 根柱子中依次放入编号为 1,2,3,4,⋯ 1, 2, 3, 4, \cdots1,2,3,4,⋯ 的球. 每次只能在某根柱子的最上面放球. 在同一根柱子中,任何 2 22 个相邻球的编号之和为完全平方数. 试设计一个算法,计算…
#6010. 「网络流 24 题」数字梯形   题目描述 给定一个由 n nn 行数字组成的数字梯形如下图所示.梯形的第一行有 m mm 个数字.从梯形的顶部的 m mm 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形的顶至底的路径. 分别遵守以下规则: 从梯形的顶至底的 m mm 条路径互不相交: 从梯形的顶至底的 m mm 条路径仅在数字结点处相交: 从梯形的顶至底的 m mm 条路径允许在数字结点相交或边相交. 输入格式 第 1 11 行中有 2 22 个正整数 m mm…
#6008. 「网络流 24 题」餐巾计划 题目描述 一个餐厅在相继的 n nn 天里,每天需用的餐巾数不尽相同.假设第 i ii 天需要 ri r_ir​i​​ 块餐巾.餐厅可以购买新的餐巾,每块餐巾的费用为 P PP 分:或者把旧餐巾送到快洗部,洗一块需 M MM天,其费用为 F FF 分:或者送到慢洗部,洗一块需 N NN 天,其费用为 S SS 分(S<F S < FS<F). 每天结束时,餐厅必须决定将多少块脏的餐巾送到快洗部,多少块餐巾送到慢洗部,以及多少块保存起来延期送洗.…
题目描述 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图.迷宫的外形是一个长方形,其南北方向被划分为 \(n\) 行,东西方向被划分为 \(m\) 列, 于是整个迷宫被划分为 \(n \times m\) 个单元.每一个单元的位置可用一个有序数对 (单元的行号, 单元的列号) 来表示.南北或东西方向相邻的 \(2\) 个单元之间可能互通,也可能有一扇锁着的门,或者是一堵不可逾越…
题目描述 某公司发现其研制的一个软件中有 \(n\) 个错误,随即为该软件发放了一批共 \(m\) 个补丁程序.每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才可以使用.一个补丁在排除某些错误的同时,往往会加入另一些错误. 换句话说,对于每一个补丁 \(i\) ,都有 \(2\) 个与之相应的错误集合 \(B_1(i)\) 和 \(B_2(i)\) ,使得仅当软件包含 \(B_1(i)\) 中的所有错误,而不包含 \(B_2(i)\) 中的任何错误…
传送门 网络流好题. 这道题可以动态建图. 不难想到把每个球iii都拆点成i1i_1i1​和i2i_2i2​,每次连边(s,i1),(i2,t)(s,i_1),(i_2,t)(s,i1​),(i2​,t),如果(u,v)(u,v)(u,v)可以匹配的话就连边(u1,v2)(u_1,v_2)(u1​,v2​),然后用最大流检验,如果能流动说明不用加柱子,否则需要新加一个柱子. 题目还要求输出方案. 那么我们在dfsdfsdfs的时候更新后继就可以了. 代码: #include<bits/stdc+…
题目描述 假设一个试题库中有 \(n\) 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 \(m\) 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. 输入格式 第 \(1\) 行有 \(2\) 个正整数 \(k\) 和 \(n\) .\(k\) 表示题库中试题类型总数,\(n\) 表示题库中试题总数.第 \(2\) 行有 \(k\) 个正整数,第 \(i\) 个正整数表示要选出的类型 \(i\) 的题数.这 \(k\) 个数相加就是要选…
题目描述 给定一个 \(\text{N}\times \text{N}\) 的方形网格,设其左上角为起点◎,坐标为 \(\text{(1,1)}\) ,\(\text{X}\) 轴向右为正, \(\text{Y}\) 轴向下为正,每个方格边长为 1 ,如图所示. 一辆汽车从起点◎出发驶向右下角终点▲,其坐标为 \((\text{N},\text{N})\) . 在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油.汽车在行驶过程中应遵守如下规则: 汽车只能沿网格边行驶,装满油后能行驶 \(\…
题目描述 有 \(n\) 件工作要分配给 \(n\) 个人做.第 \(i\) 个人做第 \(j\) 件工作产生的效益为 \(c_{ij}\) ​​.试设计一个将 \(n\) 件工作分配给 \(n\) 个人做的分配方案,使产生的总效益最大. 输入格式 文件的第 \(1\) 行有 \(1\) 个正整数 \(n\) ,表示有 \(n\) 件工作要分配给 \(n\) 个人做.接下来的 \(n\) 行中,每行有 \(n\) 个整数 \(c_{ij}\) ,表示第 \(i\) 个人做第 \(j\) 件工作产…