问题描述: 假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为 1,2,3,4......的球. (1)每次只能在某根柱子的最上面放球. (2)在同一根柱子中,任何2个相邻球的编号之和为完全平方数. 试设计一个算法,计算出在n根柱子上最多能放多少个球.例如,在4 根柱子上最多可放11个球. ´编程任务: 对于给定的n,计算在 n根柱子上最多能放多少个球. ´数据输入: 文件第1 行有 1个正整数n,表示柱子数. ´结果输出: 文件的第一行是球数. 数据规模 n<=60  保证答案小于16…
题目描述:这里 这道题是网络流问题中第一个难点,也是一个很重要的问题 如果直接建图感觉无从下手,因为如果不知道放几个球我就无法得知该如何建图(这是很显然的,比如我知道 $1+48=49=7^2$ ,可是我都不知道是否能放到第48个球,那我怎么知道如何建边呢?) 所以这时就体现出了一个很重要的想法:枚举答案!!! 我们知道,正常有二分答案的做法,可以二分一个答案然后检验 这里用类似的想法,但由于答案比较小而且建图更方便,所以我们直接从小往大枚举答案即可 之所以建图更方便,是因为如果我们从小向大枚举…
传送门 题目描述 «问题描述: 假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为1,2,3,...的球. (1)每次只能在某根柱子的最上面放球. (2)在同一根柱子中,任何2个相邻球的编号之和为完全平方数. 试设计一个算法,计算出在n根柱子上最多能放多少个球.例如,在4 根柱子上最多可放11 个球. «编程任务: 对于给定的n,计算在n根柱子上最多能放多少个球. 输入输出格式 输入格式: 第1 行有1个正整数n,表示柱子数. 输出格式: 程序运行结束时,将n 根柱子上最多能放的球数以及…
本题枚举每多一个球需要多少个柱子,可以边加边边计算,每次只需要判断$i-Dinic()$即可:特别注意边界. #include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <queue> usin…
原题链接 Description 假设有根柱子,现要按下述规则在这根柱子中依次放入编号为的球. 每次只能在某根柱子的最上面放球. 在同一根柱子中,任何2个相邻球的编号之和为完全平方数. 试设计一个算法,计算出在根柱子上最多能放多少个球. Solution 如果是完全平方数则连有向边,那么一个柱子上的球就相当于图中的一条路径.二分答案,以是否能用不超过条路径覆盖作为条件. Code //「网络流 24 题」魔术球 #include <cstdio> #include <cstring>…
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 个相邻球的编号之和为完全平方数. 试设计一个算法,计算出…
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 个相邻球的编号之和为完全平方数. 试设计一个算法,计算…
写在前面:SDOI2016 Round1滚粗后蒟蒻开始做网络流来自我拯救(2016-04-11再过几天就要考先修课,现在做网络流24题貌似没什么用←退役节奏) 做的题目将附上日期,见证我龟速刷题. 1.飞行员配对方案问题 2016-04-11 二分图最大匹配问题,更新了一下$Dinic$模板,带上了当前弧优化和多路增广.这道题输出方案有很多种,可是没有special judge,所以没有A,但方案数是对的.合法的输出方案只能用匈牙利算法解决. #include<queue> #include&…
------------------------------------------------------------------------------------ 17/24 ------------------------------------------------------------------------------------   开坑了...中考前看看能不能填完(总感觉会TJ...QwQ) TJ啦23333333 1.飞行员配对问题(二分图最大匹配 裸匈牙利. #incl…
网络最大流 dinic+当前弧优化. const int N=10007,M=100007,inf=1e9; int s,t,head[N],ver[M],edge[M],Next[M],tot=1,cur[N],dep[N];queue<int>q; void add(int u,int v,int w){ver[++tot]=v,Next[tot]=head[u],edge[tot]=w,head[u]=tot,ver[++tot]=u,Next[tot]=head[v],head[v]=…
743. [网络流24题] 最长k可重区间集 ★★★   输入文件:interv.in   输出文件:interv.out   简单对比时间限制:1 s   内存限制:128 MB «问题描述: «编程任务: 对于给定的开区间集合I和正整数k,计算开区间集合I的最长k可重区间集的长度. «数据输入: 由文件interv.in提供输入数据.文件的第1 行有2 个正整数n和k,分别表示开区间的 个数和开区间的可重迭数.接下来的n行,每行有2个整数,表示开区间的左右端点坐标. «结果输出: 程序运行结…
这道题其实蛮好想的,因为分为正,副飞行员.所以就把正飞行员当作Boy,副飞行员当作Girl.然后做Hungry即可. #include<bits/stdc++.h> using namespace std; ][],vis[],girl[],n,n1; int hungry(int boy) { int i; ;i<=n;i++) { &&vis[i]==) { vis[i]=; ||girl[i]==) { girl[i]=boy; ; } } } ; } int ma…
描述 http://cojs.tk/cogs/problem/problem.php?pid=14 有一些正飞行员和副飞行员,给出每个正飞行员可以和哪些副飞行员一起飞.一架飞机上必须一正一副,求最多多少飞机可以飞. 分析 裸的二分图匹配... 请叫我水题小王子... #include <bits/stdc++.h> using namespace std; +,INF=0x7fffffff; ; int lvl[maxn],itr[maxn],head[maxn]; struct edge{…
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1221 n天,每天需要r个毛巾,用完以后可以洗,要么花fa洗a天,要么花fb洗b天,毛巾不够了可以话f买一个,问最少需要多少钱. 分析 把每天拆成两个点:x[i]表示第i天的脏毛巾,y[i]表示第i天要用的毛巾. 1.s向x[i]连弧,容量为r[i],花费为0,表示每天会用脏r[i]条毛巾. 2.x[i]向x[i+1]连弧(注意边界),容量为INF,花费为0,表示把第i天的脏毛巾搁置到第i+1…
[题意] T 公司发现其研制的一个软件中有 n 个错误, 随即为该软件发放了一批共 m 个补丁程序. 每一个补丁程序都有其特定的适用环境, 某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才可以使用.一个补丁在排除某些错误的同时, 往往会加入另一些错误.换句话说, 对于每一个补丁 i, 都有 2 个与之相应的错误集合 B1[i]和 B2[i],使得仅当软件包含 B1[i]中的所有错误, 而不包含 B2[i]中的任何错误时, 才可以使用补丁 i. 补丁 i 将修复软件中的某些错误 F1[…
[问题描述]     飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员.由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如何搭配驾驶员才能使出航的飞机最多.   如图,假设有10个驾驶员,如图中的V1,V2,-,V10就代表达10个驾驶员,其中V1,V2,V3,V4,V5是正驾驶员,V6,V7,V8,V9,V10是副驾驶员.如果一个正驾驶员和一个副驾驶员可以同机飞行,就在代表他们两个之间连一条线,两个人不能同机…
CJOJ 1494 [网络流24题] 搭配飞行员(二分图最大匹配) Description 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员.由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如何搭配驾驶员才能使出航的飞机最多. 如图,假设有10个驾驶员,如图中的V1,V2,-,V10就代表达10个驾驶员,其中V1,V2,V3,V4,V5是正驾驶员,V6,V7,V8,V9,V10是副驾驶员.如果一个正驾驶员和一个…
先贴题面 14. [网络流24题] 搭配飞行员 ★★☆   输入文件:flyer.in   输出文件:flyer.out简单对比时间限制:1 s   内存限制:128 MB [问题描述]     飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员.由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如何搭配驾驶员才能使出航的飞机最多. 如图,假设有10个驾驶员,如图中的V1,V2,…,V10就代表达10个驾驶员,其中…
原题链接 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…
[网络流24题]最长k可重线段集(费用流) 题面 Cogs的数据有问题 Loj 洛谷 题解 这道题和最长k可重区间集没有区别 只不过费用额外计算一下 但是,还是有一点要注意的地方 这里可以是一条垂直的直线 所以,首先把所有的x轴全部乘2 如果两个相等就把右端点+1 否则左端点+1 这样就可以解决垂直于x轴的问题了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #…
[网络流24题]最长k可重区间集(费用流) 题面 Cogs Loj 洛谷 题解 首先注意一下 这道题目里面 在Cogs上直接做就行了 洛谷和Loj上需要判断数据合法,如果\(l>r\)就要交换\(l,r\) 首先离散化 数据范围比较大 记录一下\(l,r\)和区间大小 这个问题可以换一种看法 相当于从源点出发,走K次, 问你路径的最大权值和 其中有些边可以无限制的走,但是它们的长度为0 所以从源点开始到汇点,挂出一条链来 容量为K,费用为0 这些路是可以随便走的 另外,还有若干个区间 但是每个只…
题目传送门:这里 这是网络流24题里最简单的一道,我们从这里开始 虽然是网络流24题之一,但可以不用网络流... 本题采用贪心即可 有一个很显然的思想:在分配每一组时,我们都应当优先分配给当前可容纳人数更多的桌 证明:这样做显然能最大限度的保留可以用的桌,如果这样做都不合法,那么其他策略一定不合法 那么我们用个优先队列维护即可 #include <cstdio> #include <cmath> #include <cstring> #include <cstdl…
#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 的开区间个数不超过 …
2445 -- [网络流24题-10]餐巾问题 Description 一个餐厅在相继的n天里,每天需要用的餐巾数不尽相同.假设第i天需要ri块餐巾(i=1,2,…,n).餐厅可以购买新的餐巾,每块餐巾的费用为p分:也可以把旧餐巾送到快洗部,洗一块需m天,其费用为f分:也可以把旧餐巾送到慢洗部,洗一块需要t天(t>m),其费用为s < f分.每天结束时,餐厅必须决定多少块脏的餐巾送到快洗部.多少块送到慢洗部以及多少块保存起来延期送洗.但是洗好的餐巾和购买的新餐巾之和,要满足第i天的需求量,并使…
Libre 6013 「网络流 24 题」负载平衡 (网络流,最小费用最大流) Description G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使n 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. «编程任务: 对于给定的n 个环形排列的仓库的库存量,编程计算使n 个仓库的库存数量相同的最少搬运量. Input 第1 行中有1 个正整数n(n<=100),表示有n个仓库. 第2 行中有n个正整数,表示n个仓库的库存量. Outpu…
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个…