随笔分类 -  AcWing

AcWing上的一些一些刷题记录与收获
摘要:P1251 餐巾计划问题 分析 奇妙的拆点用法。 分析完题目后,我们发现每一天需要$r_i$块新毛巾,并产生$r_i$块旧毛巾。 这不难想到,将一天拆开,分成还有的老毛巾和需要的新毛巾。 我们考虑一下,建图过程。 从源点向所有老毛巾的点连接容量为 $r_i$ 费用为0的边,再从所有的新毛巾向汇点连一 阅读全文
posted @ 2022-07-11 18:19 艾特玖 阅读(40) 评论(0) 推荐(0)
摘要:POJ 1149 Pig/AcWing2237 猪 分析 本题还是蛮有意思的,我们来理顺一下思维过程。 我们总结一下,题目的操作。 每名顾客按顺序进行 将自己有钥匙的猪舍打开,从中挑选一些不超过自己想买的数量的猪。 同时可以将,打开的猪舍中的猪进行调整 这里面,我们需要一个逆向思维 我们考虑打开的猪 阅读全文
posted @ 2022-07-06 11:59 艾特玖 阅读(56) 评论(0) 推荐(0)
摘要:2240. 餐饮 分析 网络流经典优化。 拆点 网络流中拆点,特指将点拆开为入点与出点,以此来限制经过点的流量 网络流建图 将点拆为入点与出点 从入点向出点连接一条容量为限制的边 本题,就非常简单了,直接将牛拆点。 AC_code #include<bits/stdc++.h> using name 阅读全文
posted @ 2022-07-05 23:18 艾特玖 阅读(25) 评论(0) 推荐(0)
摘要:P2754 [CTSC1999]家园 / 星际转移问题 分析 这里用到的优化是图论常见的优化,分层图。 我们来分析一下题意,我们想要知道 至少需要花多少天才能够将k个人从0号点送到n+1号点 其中有m条路线,每条路线承载人数是有限的的。 这题还是难想的,我们直接说建图思路。 我们建立节点之间的网络流 阅读全文
posted @ 2022-07-05 21:37 艾特玖 阅读(48) 评论(0) 推荐(0)
摘要:秘密挤奶机 分析 最大流判断 判断从起点到终点是否有K条互相不相交的路径,每条路径只可以用一次 对于无向边和有向边都一样的 其中无向图建立残留网络时,可以将相同方向的路径容量合并,则就是建立两条u->v容量为c,v->u容量也为c的边 网络流建图 将其中所有边的容量都设为1,然后开始建立残留网络 接 阅读全文
posted @ 2022-07-05 19:09 艾特玖 阅读(37) 评论(0) 推荐(0)
摘要:圆桌问题 分析 二分图多重最大匹配 与二分图最大匹配的最大不同为: 二分图最大匹配中,左右两个点都只能被用一次,而在多重匹配中,左右的点都可以多次被用 网络流建图 从源点向左边点连一条容量为$L_i$的边 从所有右边的点向汇点连一条容量为$R_i$的边 将中间的所有连接,从左边点向右边点连接一条容量 阅读全文
posted @ 2022-07-03 23:28 艾特玖 阅读(56) 评论(0) 推荐(0)
摘要:P2756 飞行员配对方案问题 分析 经典模型,二分图求最大匹配 用匈牙利时间复杂度为$O(n^3)$,用网络流$O(m\sqrt{n})$ 直接说 网络流建图 从源点向左边点连一条容量为1的边 从所有右边的点向汇点连一条容量为1的边 将中间的所有连接,从左边点向右边点连接一条容量为1的边 确定方案 阅读全文
posted @ 2022-07-03 22:40 艾特玖 阅读(28) 评论(0) 推荐(0)
摘要:边的双连通分量(e-DCC) 桥:将桥断开后,连通图,会变成两个连通块。 e-DCC的概念:极大的不包括桥的连通块。 关于e-DCC的性质:其中任意两点之间,都有两条不相交的路径。 注意:其中的不相交,指的是,没有公共路径。 缩点后的图是一颗树。 因此引出的一个常见问题: 给一个无向图最少加几条边后 阅读全文
posted @ 2021-11-21 11:58 艾特玖 阅读(85) 评论(0) 推荐(0)
摘要:原题链接 分析 知识点 拆点图 思路分析 从原题中,我们要求的是从最上角走到最下角的最小步数。 但是此时加了一些限制,想通过门,需要相应的钥匙才能通过 那么相同下标的点,可能就因为此时是否有对应钥匙而变得不同。 这就提示我们,可以用拆点的方法,来把相同的下标的点,根据不同的状态分开,就是拆点。 此时 阅读全文
posted @ 2021-09-23 20:04 艾特玖 阅读(83) 评论(0) 推荐(0)
摘要:原题链接:装满的油箱 分析 算法 dijkstra+拆点图 时间复杂度 O(MlogNC) 思路 在刚写这题的时候,完全没有任何思路。因为通过分析题目,我们可以知道,其实是类似于求一个最短路。但是又跟典型的最短路不相同。因为需要算的其实是。 从起点走到终点的花费的最小值。但这个花费,让我有点迷茫了, 阅读全文
posted @ 2021-09-09 20:29 艾特玖 阅读(74) 评论(0) 推荐(0)
摘要:可持久化数据结构 可持久化 首先需要介绍可持久化的概念。可持久化就是,保存下来的每一次变化,所影响的那些节点。干说会比较抽象,所以我们以两道题目为例子,来展示可持久化的作用和含义。 可持久化tire树 可以用一张图来展示,可持久化tire树的操作。 当我们,插入一个新节点时,直接从该节点指向除了要插 阅读全文
posted @ 2021-08-26 19:06 艾特玖 阅读(66) 评论(0) 推荐(0)
摘要:线段树 原理 线段树,就是把一段区间,不断二分,分为一颗二叉树,去维护区间信息。 算法结构 一个完整的线段树代码中,通常由六个部分组成 这里展示以一个简单的整数问题2为例 struct Node 节点部分,其中维护的是,关于线段树所有需要用到的信息。 这里需要着重说一下的是,一般我们的Node会开到 阅读全文
posted @ 2021-08-25 21:13 艾特玖 阅读(61) 评论(0) 推荐(0)
摘要:树状数组 时间复杂度 单点修改 O(logn) 区间查询 O(logn) 前置知识 lowbit()运算:非负整数x在二进制表示下最低位1及其后面的0构成的数值。 #define lowbit(x) x & -x 树状数组的思想 树状数组的本质思想是使用树结构维护”前缀和”,从而把时间复杂度降为O( 阅读全文
posted @ 2021-08-23 20:37 艾特玖 阅读(60) 评论(0) 推荐(0)
摘要:并查集 简单对并查集性质及其能解决的问题做一下总结 性质:传递性,和相互性 可以解决的问题 可以利用集合的特点,来进行判环。 并查集可以在划分集合时候,可以实现维护集合的大小和集合中元素距离根节点的距离。 带权并查集,便可以利用集合中元素到根节点的距离的操作,通过相对的距离,来判断不同的元素之间的关 阅读全文
posted @ 2021-08-23 11:00 艾特玖 阅读(41) 评论(0) 推荐(1)
摘要:原题链接 法一:带权并查集 分析: 通过分析题目,假设s[i]为前缀和数组,我们可以得到以下等效关系: [l,r]内1的个数 ⇔ s[r]-s[l-1] ⇔ 若为奇数,则s[l],s[r]奇偶性不同,若为偶数则相同 因此我们可以用带权并查集来解决这个问题。 我们在用带权并查集时,是维护了一个相对关系 阅读全文
posted @ 2021-08-23 10:43 艾特玖 阅读(112) 评论(0) 推荐(0)
摘要:原题链接 分析 分析题目后,我们可以 知道,我们要求的就是,维护并查集中每个元素到根节点的距离,同时维护集合的大小。 第一个需要解决的问题 如何维护当前战舰到根节点的距离 当我们把一列战舰放b到另一列战舰a后,我们如何更新,另一个队列b中每一个战舰到根节点的距离? 我们维护一个数组d,表示的是x到p 阅读全文
posted @ 2021-08-22 20:32 艾特玖 阅读(51) 评论(0) 推荐(0)
摘要:原题链接 分析 裸的ST表 ST表 初始化 倍增枚举出区间的最大值,f[N] [M]代表,从n开始长度为2^m的区间最值。 查询 [l,r] 1.求出该区间长度最接近的倍增预处理后的长度,k = log(len)/log(2); 2.最大值为 \[ Max=max(f[l][k],f[r-2^k+1 阅读全文
posted @ 2021-08-22 13:08 艾特玖 阅读(37) 评论(0) 推荐(0)
摘要:原题链接 分析 首先,我们可以分析出,在一行中,各列摊位之间交换位置,是不会改变行的摊位数量,列也同理,则我们的问题就变为了,怎样移动可以获得最少移动次数,是的每行每列,其中各各格子的数都相同。 这时,就出现了一个贪心模型环形卡牌分配 题目默认只能左右传递,则,最优解一定是没有来回的,所从全局来看, 阅读全文
posted @ 2021-08-22 09:38 艾特玖 阅读(115) 评论(0) 推荐(0)
摘要:原题链接 题目分析 本题我们解决的是,在限制了区间长度时,求区间最大的平均值。 对于这个问题,第一个思路是最朴素的思路,枚举区间长度,再以此枚举每一个区间,区间内和的问题可以由前缀和来解决。但是这样,我们的时间复杂度就是趋近于n方的,肯定不行。随后想到是否可以用二分来解决这个问题。 既然考虑使用二分 阅读全文
posted @ 2021-08-21 12:48 艾特玖 阅读(273) 评论(0) 推荐(0)
摘要:原题链接 思路 我们可以通过题目上给出的图示看出,每一个等级的图是由前一个等级的图拼成的,拼接方式如图 因此在求解一个图上某一点的编号时,我们需要确定他是属于哪一块的,再进行坐标变换。 同时为了方便确定,我们将所有点的编号从0开始,同时坐标轴也会从0,开始。 接下来我们看坐标变化,以下图为例(图确实 阅读全文
posted @ 2021-08-17 13:29 艾特玖 阅读(159) 评论(0) 推荐(0)