随笔分类 -  数据结构

摘要:势能线段树包括了吉司机线段树。思想就是正常线段树可能遇到难 pushup 的情况,我们直接暴力递归,然后根据势能分析说明这个暴力复杂度是均摊可接受的。 【势能线段树】 【例一】 CF438D The Child and Sequence 题意: 支持三种操作。 单点修改。 区间对给定数取模。 区间求 阅读全文
posted @ 2025-02-20 22:47 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 这个分数规划非常显然了。问题转化为求最长的 len[L,U] 的链。 长链剖分优化。 dp[i][j] 表示 i 子树向下长度为 j 的链最大权值是多少。答案在合并时更新。用先长子深搜序 + 线段树对长链剖分进行优化。 另外点分治也可以,只能说都很暴力 阅读全文
posted @ 2024-11-19 11:32 FLY_lai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:给定一棵树和 m 条路径,每条路径有权值。要求从中选若干条结点不相交的路径使得权值最大。 n,m105。 对于树上路径的 DP 问题,常常把路径的贡献/限制放到它的 LCA 处考虑。 令 dp[u]u 的子树内选完全在子树内的路径,结点不相交的最大权值 阅读全文
posted @ 2024-11-18 21:12 FLY_lai 阅读(15) 评论(0) 推荐(0) 编辑
摘要:传送门 小 C 有一棵 n 个结点的有根树,根是 1 号结点,且每个结点最多有两个子结点。 定义结点 x 的权值为: 1.若 x 没有子结点,那么它的权值会在输入里给出,保证这类点中每个结点的权值互不相同。 2.若 x 有子结点,那么它的权值有 \(p 阅读全文
posted @ 2024-11-02 08:14 FLY_lai 阅读(13) 评论(0) 推荐(0) 编辑
摘要:打的算不错的了。就是 C 的部分分没时间打满了。 警示:调试的时候切忌过分相信自己的某一部分代码!!!请把任何一个函数都注释一遍检查错误源头。 T1 签到题。记录 pfx[],suf[] 表示从前往后尽量少走、从后往前尽量多走,会走到哪里。 然后枚举 i=0m,看 \(pf 阅读全文
posted @ 2024-09-24 16:28 FLY_lai 阅读(30) 评论(0) 推荐(0) 编辑
摘要:当你填表法推了半年没推出来,为什么不试试刷表法呢? 洛谷传送门 在一行中有 n个格子,从左往右编号为 1n。 有 2 颗棋子,一开始分别位于位置AB。按顺序给出Q个要求,每个要求是如下形式: 给出一个位置 xi,要求将两个棋子中 阅读全文
posted @ 2024-09-18 14:49 FLY_lai 阅读(8) 评论(0) 推荐(0) 编辑
摘要:传送门 定义一个函数 f,输入一个数组 a,输出一个数组 ba 的子序列:b1=a1,设 bia 中的位置为 posi,则 biaposi1+1an 中第一个严格大于 阅读全文
posted @ 2024-09-16 19:09 FLY_lai 阅读(16) 评论(0) 推荐(0) 编辑
摘要:警示:看到一道做过的题不要着急上头去写,写炸了心态就崩了。 T1 题意: 有 n 个人,每个人有经验 wi、薪水 si、意愿 pi 三个属性。要选出 2k 个人组成 k 组,每组两个人。每个组内一人做组长,一人做组员。要求组长经验 阅读全文
posted @ 2024-09-15 12:57 FLY_lai 阅读(34) 评论(0) 推荐(0) 编辑
摘要:为了 LCT 制造了一个 Splay …… Splay 还是一种二叉排序树。我们想让他支持查询结点,删除结点等等。但是普通 BST 复杂度难以保证,于是 Splay 出现了。 【引入】 Splay 的思想和并查集的路径压缩类似。并查集的路径压缩允许出现一两次复杂度高的操作,但是经历过一次后就不会再有 阅读全文
posted @ 2024-04-14 08:39 FLY_lai 阅读(36) 评论(0) 推荐(0) 编辑
摘要:题意:给定一个序列,要求从中选出 k 个不相交的区间使和最大。n105。 如果 DP,至少 O(n2)。而这题可以模拟费用流做。 【费用流模型】 建立 n+1 个点 p1pn+1,\(p_i\rightarrow p_{i+1}\ 阅读全文
posted @ 2024-04-02 18:28 FLY_lai 阅读(31) 评论(0) 推荐(0) 编辑
摘要:传送门 题意:有 n 个队友和 m 个敌人,每个队友 iai 颗子弹。敌人 jbj 颗子弹。 队友击杀敌人,必须 ai>bj,然后会获得 aibj+wj 的收益。(wj: 每个敌人都有一个参数) 每 阅读全文
posted @ 2024-03-31 10:43 FLY_lai 阅读(66) 评论(0) 推荐(1) 编辑
摘要:【可持久化】 可持久化可以应用于查询历史版本的问题,关键在于给每个版本之间共用顶点,减小空间代价。 所以可持久化永远不会修改结点,只会新建结点。 可持久化不止应用于 "历史版本" 问题,有时题目并没有给出什么历史版本的描述,但是不同的线段树之间变化很小,也可以可持久化。 【模板】可持久化线段树 2 阅读全文
posted @ 2024-03-31 09:44 FLY_lai 阅读(11) 评论(0) 推荐(0) 编辑
摘要:传送门 NOI 的题果然是非常的难且有意思。还有就是推荐一下command_block 的题解。 这题的题意比较难。 题意:有 n 种菜,初始每种菜有 ci 个,单价 ai,如果不出售每天会变质 xi 棵。第一次卖这种菜会获得 si 的奖励。每天至多卖 阅读全文
posted @ 2024-03-30 10:17 FLY_lai 阅读(34) 评论(0) 推荐(0) 编辑
摘要:传送门 题意:已知未来 n 天的股价 ci,每天可以买入一支或者卖出一支,求 n 天后利润总额最大是多少。 算法:模拟费用流。 【费用流模型】 把每一天抽象为一个结点:d1dnSd1dn,容量 \(1\ 阅读全文
posted @ 2024-03-29 20:17 FLY_lai 阅读(16) 评论(0) 推荐(0) 编辑
摘要:P1484 种树 有 n 个坑。第 i 个坑种树的价值是 ci,相邻坑不能同时种。可以种 k 颗树,求最大价值。 模拟费用流,建图类似这样: 中间两层结点之间有 7 条边,表示 n=7 的情况。相邻两条边,例如 1,2 总流入量为 1 阅读全文
posted @ 2024-03-29 19:15 FLY_lai 阅读(23) 评论(0) 推荐(0) 编辑
摘要:P5470:NOI2019 序列 题意:给定两个长度 n 的序列 a,b。 要求各选出 k 个数,使得这 2k 个数之和最大,且两个序列选出的数至少有 l 个位置相同。 n2×105。 算法:模拟费用流。 【费用流模型】 关键点在 阅读全文
posted @ 2024-03-27 22:13 FLY_lai 阅读(30) 评论(0) 推荐(0) 编辑
摘要:模拟费用流。 传送门 题意:共 n=x+y+z 个人,每个人可以选择获得 ai 个金币或 bi 个银币或 ci 个铜币。要选 x 个人拿金币,y 个人拿银币,z 个人拿铜币。问币数总和最大是多少。n105。 先建出费用流 阅读全文
posted @ 2024-03-25 21:37 FLY_lai 阅读(27) 评论(0) 推荐(0) 编辑
摘要:算法:线段树维护,模拟费用流。 传送门 你需要生产 k 张光盘。每张光盘都要经过两道工序:先在 A 工厂进行挤压,再送到 B 工厂涂上反光层。 你知道每天 A、B 工厂分别加工一张光盘的花费。你现在有 n 天时间,每天可以先送一张光盘到 A 工厂(或者不送),然后再送一张已经在 A 阅读全文
posted @ 2024-03-25 21:36 FLY_lai 阅读(18) 评论(0) 推荐(0) 编辑
摘要:模拟费用流,顾名思义,就是直接跑费用流会超时,于是尝试用数据结构模拟费用流的过程。 在某些题里,模拟费用流就是 "反悔贪心"。 标一下 command_block 的博客 LOJ574:黄金矿工 LOJ6405:征服世界 UOJ455:雪灾与外卖 P6122:Mole Tunnels 【普通模型】 阅读全文
posted @ 2024-03-22 20:30 FLY_lai 阅读(55) 评论(0) 推荐(0) 编辑
摘要:模板题 动态添加线段,求某个 x 对应的 y 最大是多少,且对应哪条直线。 因为 x 比较小,考虑在 x 轴上建立线段树。把每个线段写成 y=kx+b 的解析式形式并求出它的定义域 [l,r],每条线段就可以看作是一个应用在 [l,r] 上的区 阅读全文
posted @ 2024-03-20 21:41 FLY_lai 阅读(31) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示