12 2018 档案

摘要:题目链接: "这里" "或者这里" 答案是很显然的,记$g(i)$为在$i$下平衡木时的期望收益 那么$g(i)=max(f(i),\frac{g(i 1)+g(i+1)}{2})$ ~~好了做完了~~ TMD这个式子有和没有有什么区别啊(还是有区别的) 我们考察那些$g(i)=f(i)$的点 更特 阅读全文
posted @ 2018-12-27 13:41 EncodeTalker 阅读(269) 评论(0) 推荐(0)
摘要:题目链接: "分配问题" 这题比运输问题还裸啊 费用流模板题 c++ include include include include include include include include include using namespace std; define rep(i,a,b) for 阅读全文
posted @ 2018-12-27 00:12 EncodeTalker 阅读(216) 评论(0) 推荐(1)
摘要:题目链接: "运输问题" 当然可以写KM了对吧 但是写费用流也是一样简单啊 不管那边都是模板啊 c++ include include include include include include include include include using namespace std; defin 阅读全文
posted @ 2018-12-27 00:09 EncodeTalker 阅读(112) 评论(0) 推荐(1)
摘要:题目链接: "火星探险问题" 这一题类似于深海机器人问题 唯一的区别是这一题的资源不再位于边上而位于点上,由于资源只能开采一次所以需要考虑拆点 接下来就和那一道问题一样了 接下来又是~~喜闻乐见~~的输出方案了 我们从源点出发,每一次dfs向东走还是向南走,记录一个当前枚举方案时的流量,当某条边的记 阅读全文
posted @ 2018-12-27 00:06 EncodeTalker 阅读(163) 评论(0) 推荐(1)
摘要:题目链接: "骑士共存问题" 这道题其实代表了一类问题——在二维坐标平面上的网络流问题 我们首先要用一个数来代表一个特定的点 然后建边还是很显然的——根据攻击关系建边 但是这类问题还要注意一点——减少重边 一般我们会以奇数(或偶数)建边,即源点$s$连向所有用奇数表示的点,奇数点又向偶数点连边,偶数 阅读全文
posted @ 2018-12-26 23:56 EncodeTalker 阅读(121) 评论(0) 推荐(1)
摘要:题目链接: "航空路线问题" 由题目中的“每一个城市最多经过一次”可知需要拆点 在根据所求经过城市数最多将城市拆成的边的容量设为1,费用设为1 同时以$n$为汇点,源点到1和1中的两点的容量均设为2 再将原图中的边的容量设为$INF$,费用为0 跑最大费用最大流 输出方案的话,从1开始dfs出两条路 阅读全文
posted @ 2018-12-26 23:39 EncodeTalker 阅读(229) 评论(0) 推荐(0)
摘要:题目链接: "软件补丁问题" 这一题还是能看出是网络流的,但是状压+spfa更为方便(因为就算硬上网络流的话流量基本上都是1) 直接将题目中所给的四种状态状态压缩,即一开始的状态为全1(全部都是bug),目标状态是0 注意位运算的优先级 c++ include include include inc 阅读全文
posted @ 2018-12-26 23:31 EncodeTalker 阅读(121) 评论(0) 推荐(0)
摘要:题目链接: "飞行员配对方案问题" 很多人把这题当做二分图匹配的模板做,匈牙利的时间复杂度为$O(nm)$ 但是如果用dinic去做时间就会是$O(\sqrt nm)$ 建立超级源点$s$和$t$,直接按照输入连边,源点和汇点分别连向一个点集即可 c++ include include includ 阅读全文
posted @ 2018-12-26 23:27 EncodeTalker 阅读(108) 评论(0) 推荐(0)
摘要:题目链接: "魔术球问题" 首先明确了“每个球只能被用一次”这个条件,我们就要考虑拆点了 接下来我们一个一个枚举球,对于当前枚举到的球考虑它和之前的球是否有连接关系,若有则将它们连起来 然后跑最大流,当我们在残量网络中跑出的最大流不为0时,就说明新球可以与之前的一根柱子建立对应关系(他可以通过之前的 阅读全文
posted @ 2018-12-24 10:38 EncodeTalker 阅读(158) 评论(0) 推荐(0)
摘要:题目链接: "深海机器人问题" ~~出题人的语文是要拎出去枪毙的~~ 大意就是给了一些机器人的起点和终点,然后在网格图上每一条边都有一个收益,走过这条边就会有一个收益,但这个收益只能被获得一次,求最大收益 考虑使用费用流 很明显这是一个多个源点和多个汇点的题目,所以我们建一个超级源点和超级汇点并连容 阅读全文
posted @ 2018-12-24 10:30 EncodeTalker 阅读(136) 评论(0) 推荐(0)
摘要:题目链接: "codeforces 997C.Sky Full of Stars" 一道很简单(?)的推式子题 直接求显然不现实,我们考虑容斥 记$f(i,j)$为该方阵中至少有$i$行和$j$列为相同颜色的情况 那么显然有$ans=\sum_{i=0}^n \sum_{j=0}^n C_n^i C 阅读全文
posted @ 2018-12-21 10:59 EncodeTalker 阅读(472) 评论(0) 推荐(0)
摘要:题目链接: "codeforces553C Love Triangles" 我们来看一下对于一个合法三角形可能出现的边 我们发现,在确定了两边之后,第三条边是什么也就随之确定了 我们用$1$表示$love$,用$0$表示$hate$ 那么$111 11,1$ ​ $100 \ 00,1/10,1$ 阅读全文
posted @ 2018-12-19 22:40 EncodeTalker 阅读(200) 评论(0) 推荐(0)
摘要:题目链接: "最长不下降子序列问题" 这一个问题虽然有三小问,但是每一个小问题的连接非常紧密 对于第一问,直接$O(n^2)$水过,你要用$O(nlogn)$当然也可以啊 二三问考虑使用网络流求解 我们利用第一问中得到的dp关系来建图: 很明显的是这里的每一个数 只能用一次 ,所以我们 将每一个点拆 阅读全文
posted @ 2018-12-19 22:25 EncodeTalker 阅读(145) 评论(0) 推荐(0)
摘要:题目链接: "骑士共存问题" 本题的建图依然是十分清晰,主要是要考虑到直接求放多少个马不是很方便求,于是从问题的反面入手,考虑在棋盘全满的情况下最少拿走多少个马使得当前棋盘的局面合法 由于格子存在相互攻击的可能性(即两个格子的马可以相互攻击而不是单独一个攻击另一个),因此将图完全建立出来会耗费不少时 阅读全文
posted @ 2018-12-19 22:11 EncodeTalker 阅读(134) 评论(0) 推荐(0)
摘要:题目链接: "试题库问题" 在写过几道网络流的题目之后,这一道题目就显得比较常规了 建立一个超级源点$s$和超级汇点$t$。我们从题目的性质入手 题目是会影响一种或多种类型,但是只会产生1的贡献,因此由题目向它对应的类型连一条容量为1的边 为了满足对各种类型的需求,我们由每种类型向最终汇点连一条容量 阅读全文
posted @ 2018-12-19 20:25 EncodeTalker 阅读(233) 评论(0) 推荐(0)
摘要:题目链接: "[CTSC1999]家园" 这个题目我们不是很好在做网络流的时候判断是否有解,因此我们考虑分开来做 对于是否有解的判断,我们唯一需要解决的是飞船的周期停泊问题,对于这个问题,我们可以用并查集解决 我们记源点$s$是地球,汇点$t$是月球,将一艘飞船上一秒在的星球和下一秒在的星球并入一个 阅读全文
posted @ 2018-12-19 20:15 EncodeTalker 阅读(141) 评论(0) 推荐(0)
摘要:题目链接: "最小路径覆盖问题" 首先引出定理:二分图的最小路径覆盖数=$n $二分图最大匹配数,我们用类似数学归纳法的方法证明 首先在$n=0$的时候显然成立 当增加了某一条边对最大匹配数没有影响时,那么这一条边一定可以被最大匹配中的某一条边所覆盖;否则这条边的两个端点都不会被边覆盖,因此需要一条 阅读全文
posted @ 2018-12-16 21:30 EncodeTalker 阅读(170) 评论(0) 推荐(0)
摘要:开坑(烂尾预定 1、 "餐巾计划问题" "题解" 2、 "最小路径覆盖问题" "题解" 3、 "试题库问题" "题解" 4、 "[CTSC1999]家园" "题解" 5、 "骑士共存问题" "题解" 6、 "最长不下降子序列问题" "题解" 7、 "深海机器人问题" "题解" 8、 "魔术球问题" 阅读全文
posted @ 2018-12-16 16:37 EncodeTalker 阅读(128) 评论(0) 推荐(0)
摘要:题目链接: "餐巾计划问题" 分析: 对于每一天,我们把它拆成两个点,分别代表每一天用完的餐巾$x_i$和每一天需要的纸巾$y_i$ 接下来就是根据题意建图,首先建立源点$s$和汇点$t$ 由于题目中每一天都需要$r_i$张餐巾,我们可以由$s$向所有的$x_i$连一条容量为$r_i$,费用为0的边 阅读全文
posted @ 2018-12-16 16:36 EncodeTalker 阅读(136) 评论(1) 推荐(0)
摘要:题目链接: "codeforces 1065F Up and Down the Tree" 题意:给出一棵树的节点数$n$以及一次移动的最大距离$k$,现在有一个标记在根节点1处,每一次可以进行一下的两个操作之一: 1、将标记移动至当前节点的子树中的某一个叶子 2、将当前标记向上移,向上移的距离不得 阅读全文
posted @ 2018-12-06 20:10 EncodeTalker 阅读(260) 评论(0) 推荐(0)