传送门 网络流好题. 这道题可以动态建图. 不难想到把每个球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+…
Libre 6003 「网络流 24 题」魔术球 (网络流,最大流) Description 假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为 1,2,3,4......的球. (1)每次只能在某根柱子的最上面放球. (2)在同一根柱子中,任何2个相邻球的编号之和为完全平方数. 试设计一个算法,计算出在n根柱子上最多能放多少个球.例如,在4 根柱子上最多可 放11个球. ´编程任务: 对于给定的n,计算在 n根柱子上最多能放多少个球. Input 第1 行有 1个正整数n,表示柱子数.…
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 个相邻球的编号之和为完全平方数. 试设计一个算法,计算出…
#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 个相邻球的编号之和为完全平方数. 试设计一个算法,计算…
原题链接 Description 假设有根柱子,现要按下述规则在这根柱子中依次放入编号为的球. 每次只能在某根柱子的最上面放球. 在同一根柱子中,任何2个相邻球的编号之和为完全平方数. 试设计一个算法,计算出在根柱子上最多能放多少个球. Solution 如果是完全平方数则连有向边,那么一个柱子上的球就相当于图中的一条路径.二分答案,以是否能用不超过条路径覆盖作为条件. Code //「网络流 24 题」魔术球 #include <cstdio> #include <cstring>…
题目描述 假设有 \(n\) 根柱子,现要按下述规则在这 \(n\) 根柱子中依次放入编号为 \(1, 2, 3, 4, \cdots\) 的球. 每次只能在某根柱子的最上面放球. 在同一根柱子中,任何 \(2\) 个相邻球的编号之和为完全平方数. 试设计一个算法,计算出在 \(n\) 根柱子上最多能放多少个球. 输入格式 文件第 \(1\) 行有 \(1\) 个正整数 \(n\),表示柱子数. 输出格式 第一行是球数.接下来的 \(n\) 行,每行是一根柱子上的球的编号. 样例 样例输入 4…
本题枚举每多一个球需要多少个柱子,可以边加边边计算,每次只需要判断$i-Dinic()$即可:特别注意边界. #include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <queue> usin…
Libre 6012 「网络流 24 题」分配问题 (网络流,费用流) Description 有n件工作要分配给n个人做.第i个人做第j件工作产生的效益为\(c_{ij}\).试设计一个将n件工作分配给n个人做的分配方案,使产生的总效益最大. 对于给定的n件工作和n个人,计算最优分配方案和最差分配方案. Input 第1 行有1 个正整数n,表示有n件工作要分配给n 个人做. 接下来的n 行中,每行有n 个整数\(c_{ij}\),1≤i≤n,1≤j≤n,表示第i 个人做第j件工作产生的效益为…
Libre 6011 「网络流 24 题」运输问题 (网络流,最小费用最大流) Description W 公司有m个仓库和n个零售商店.第i个仓库有\(a_i\)个单位的货物:第j个零售商店需要\(b_j\)个单位的货物.货物供需平衡.从第i个仓库运送每单位货物到第j个零售商店的费用为\(c_{ij}\).试设计一个将仓库中所有货物运送到零售商店的运输方案,使总运输费用最少. Input 第1行有2个正整数m和n,分别表示仓库数和零售商店数.接下来的一行中有m个正整数\(a_i\),表示第i个…
#6011. 「网络流 24 题」运输问题 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 W 公司有 m mm 个仓库和 n nn 个零售商店.第 i ii 个仓库有 ai a_ia​i​​ 个单位的货物:第 j jj 个零售商店需要 bj b_jb​j​​ 个单位的货物.货物供需平衡,即 ∑i=1mai=∑j=1nbj \sum\limits_{i = 1} ^ m a_i = \su…
#6004. 「网络流 24 题」圆桌聚餐 内存限制:256 MiB时间限制:5000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 假设有来自 n nn 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 ri r_ir​i​​.会议餐厅共有 m mm 张餐桌,每张餐桌可容纳 ci c_ic​i​​ 个代表就餐.为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐. 试设计一个算法,给出满足要…
#6006. 「网络流 24 题」试题库     题目描述 假设一个试题库中有 n nn 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 m mm 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. 输入格式 第 1 11 行有 2 22 个正整数 k kk 和 n nn.k kk 表示题库中试题类型总数,n nn 表示题库中试题总数.第 2 22 行有 k kk 个正整数,第 i ii 个正整数表示要选出的类型 i ii 的题数.这 k…
传送门 费用流经典题. 按照题目要求建边. 为了方便我将所有格子拆点,三种情况下容量分别为111,infinfinf,infinfinf,费用都为validi,jval_{id_{i,j}}validi,j​​. 然后从源点向第一排的mmm个点连边,三种情况下容量都为111,费用都为0. 然后从最后一排的m+n−1m+n-1m+n−1个点向汇点连边,三种情况下容量为111,infinfinf,infinfinf,费用都为0. 至于格子之间的路径,三种情况下容量为111,111,infinfinf…
传送门 费用流sb题. 直接从sss向每个点连边,容量为现有物品量. 然后从ttt向每个点连边,容量为最后库存量. 由于两个点之间可以互相任意运送物品,因此相邻的直接连infinfinf的边就行了. 代码: #include<bits/stdc++.h> #define N 205 #define M 50005 using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch…
题意: 思路: 0.[问题分析] 枚举答案转化为判定性问题,然后最小路径覆盖,可以转化成二分图最大匹配,从而用最大流解决. [建模方法] 枚举答案A,在图中建立节点1..A.如果对于i<j有i+j为一个完全平方数,连接一条有向边(i,j).该图是有向无环图,求最小路径覆盖.如果刚好满足最小路径覆盖数等于N,那么A是一个可行解,在所有可行 解中找到最大的A,即为最优解. 具体方法可以顺序枚举A的值,当最小路径覆盖数刚好大于N时终止,A-1就是最优解. [建模分析] 由于是顺序放球,每根柱子上的球满…
Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流) Description G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使n 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. «编程任务: 对于给定的n 个环形排列的仓库的库存量,编程计算使n 个仓库的库存数量相同的最少搬运量. Input 第1 行中有1 个正整数n(n<=100),表示有n个仓库. 第2 行中有n个正整数,表示n个仓库的库存量. Outpu…
Libre 6010「网络流 24 题」数字梯形 (网络流,最大费用最大流) Description 给定一个由n 行数字组成的数字梯形如下图所示.梯形的第一行有m 个数字.从梯形的顶部的m 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形的顶至底的路径. 规则1:从梯形的顶至底的m条路径互不相交. 规则2:从梯形的顶至底的m条路径仅在数字结点处相交. 规则3:从梯形的顶至底的m条路径允许在数字结点相交或边相交. 对于给定的数字梯形,分别按照规则1,规则2,和规则3 计算出从梯形…
Libre 6009 「网络流 24 题」软件补丁 / Luogu 2761 软件安装问题 (最短路径,位运算) Description T 公司发现其研制的一个软件中有 n 个错误,随即为该软件发放了一批共 m 个补丁程序.每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才可以使用.一个补丁在排除某些错误的同时,往往会加入另一些错误.换句话说,对于每一个补丁 i,都有 2 个与之相应的错误集合 B1[i]和 B2[i],使得仅当软件包含 B1[i]…
Libre 6008 「网络流 24 题」餐巾计划 (网络流,最小费用最大流) Description 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,-,N).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需p分: (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分(f<p).如m=l时,第一天送到快洗部的餐巾第二天就可以使用了,送慢洗的情况也如此. (3)把餐巾送到慢洗部,洗一块需n天(n>m),费用需s分(s<f). 在每天结束时,餐厅必须决定多少块用过的餐巾…
Libre 6007 「网络流 24 题」方格取数 / Luogu 2774 方格取数问题 (网络流,最大流) Description 在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法.对于给定的方格棋盘,按照取数要求编程找出总和最大的数. Input 第 1 行有 2 个正整数 m 和 n,分别表示棋盘的行数和列数.接下来的 m 行,每行有 n 个正整数,表示棋盘方格中的数. Ou…
Libre 6006 「网络流 24 题」试题库 / Luogu 2763 试题库问题 (网络流,最大流) Description 问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取m 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. 编程任务: 对于给定的组卷要求,计算满足要求的组卷方案. Input 第1行有2个正整数k和n (2 <=k<= 20, k<=n<= 1000) k 表示题库中试…
Libre 6005 「网络流 24 题」最长递增子序列 / Luogu 2766 最长递增子序列问题(网络流,最大流) Description 问题描述: 给定正整数序列x1,...,xn . (1)计算其最长递增子序列的长度s. (2)计算从给定的序列中最多可取出多少个长度为s的递增子序列. (3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的递增子序列. 编程任务: 设计有效算法完成(1)(2)(3)提出的计算任务. Input 第1 行有1个正整数n,…
Libre 6004 「网络流 24 题」圆桌聚餐(网络流,最大流) Description 假设有来自n个不同单位的代表参加一次国际会议.每个单位的代表数分别为 ri.会议餐厅共有m张餐桌,每张餐桌可容纳 ci个代表就餐. 为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐. 试设计一个算法,给出满足要求的代表就餐方案. Input 文件第1行有2个正整数m和n,m表示单位数,n表示餐桌数. 文件第2行有m个正整数,分别表示每个单位的代表数. 文件第3行有n个正整数,分别表示每个…
Luogu 2764 最小路径覆盖问题 / Libre 6002 「网络流 24 题」最小路径覆盖 (网络流,最大流) Description 给定有向图G=(V,E).设P是G的一个简单路(顶点不相交)的集合.如果V中每个顶点恰好在P的一条路上,则称P是G的一个路径覆盖.P中路径可以从V的任何一个顶点开始,长度也是任意的,特别地,可以为0.G的最小路径覆盖是G的所含路径条数最少的路径覆盖. 设计一个有效算法求一个有向无环图G的最小路径覆盖. Input 第1行有2个正整数n和m.n是给定有向无…
Luogu 2762 太空飞行计划 / Libre 6001 「网络流 24 题」太空飞行计划 (网络流,最大流) Description W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,-,Em},和进行这些实验需要使用的全部仪器的集合I={ I1, I2,-,In }.实验Ej 需要用到的仪器是I的子集Rj∈I. 配置仪器Ik 的费用为ck 美元.实验Ej 的赞助商已同意为该实验结果支付pj 美元…
原题链接 Description 求一个DAG的最小路径覆盖,并输出一种方案. Solution 模板题啦~ Code //「网络流 24 题」最小路径覆盖 #include <cstdio> #include <cstring> inline char gc() { static char now[1<<16],*S,*T; if(S==T) {T=(S=now)+fread(now,1,1<<16,stdin); if(S==T) return EOF;…
原题链接 Description 有个实验和个仪器,做实验有报酬买仪器有花费.每个实验都需要一些仪器,求最大净收益(实验报酬仪器花费),并输出一组方案. Solution 实验向所需仪器连边,实验的点权是其报酬,仪器的点权是其花费的相反数,这样构成一张带权图.所求的就是这个图的最大权闭合图. 关于最大权闭合图的求法及其证明,请参照胡泽涛的<最小割模型在信息学竞赛中的应用>P16. Code //「网络流 24 题」太空飞行计划 #include <cstdio> #include…
原题链接 题意简述 求二分图的最大匹配. 题解 这里写的是匈牙利算法. 表示节点的当前匹配. 为真表示在这一轮匹配中,无法给节点一个新的匹配.所以如果为真就不用再dfs它了,直接continue就好. Code //「网络流 24 题」搭配飞行员 #include <cstdio> #include <cstring> int const N=100+10; int n,n1; int cnt,h[N]; struct edge{int v,nxt;} ed[N*N]; void…
#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 的开区间个数不超过 …
#6013. 「网络流 24 题」负载平衡 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 G 公司有 n nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n nn 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入格式 文件的第 1 11 行中有 1 11 个正整数 n nn,表示有 n nn 个仓库.第 2 22 行中有 n nn…