专栏文章
【听课记录】25.11-LCA-Week6
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min9vga2
- 此快照首次捕获于
- 2025/12/01 22:56 3 个月前
- 此快照最后确认于
- 2025/12/01 22:56 3 个月前
11.05 优化 - 构造
- 贪心
调整法,若调整规则使方案 不变劣,则只有无法调整的方案可能是最优解。
对于集合 上的二元关系 ,若满足非自反性、反对称性、传递性、不可比性的传递性则称其满足严格弱序。若元素满足弱序关系,可以使用邻项交换,且最优解中任意交换两个相邻元素都不会变优。
模拟费用流(反悔贪心)。
- 构造(Ad-Hoc)
组合模式(注意力)。
CF632C The Smallest String Concatenation
题意
给定 个字符串 ,总长为 ,任意重排后最小化新串字典序。。
题解
对于一个答案排列 ,若存在相邻元素满足 ,将这两项交换一定不劣。于是最终排列任意相邻元素均满足 。如果可以找出一种权值 满足弱序关系,且 与 等价,则可以说明最优解唯一。
考虑比较 的 两串,通过复制若干份可得 两个等长的串。由于若干 任意拼接得到的最优串一定是 在前 在后,于是 可以表示为 。由于长度相同,这相当于比较 。于是令 表示 无限复制得到的串,以字符串为权值即可。这样就证明了排序做是对的。
然而排序时若暴力比较,单次复杂度是 ,可能有 的最劣复杂度,比较爆炸。考虑优化比较,令 为较短的串,先暴力比较 前 位,若全相同会对 和其后缀比较,可以用 Z 函数预处理实现 查询。还相同的话是一个后缀与 比较,可以直接暴力。于是做到了单次 的比较。
考虑使用归并排序,并分析其复杂度。总共有 层,每层放入排序结果的总串长为 。同时排序中若产生 的比较复杂度,会将长度至少为 的串放入排序结果,于是总复杂度也是 的。
还有线性做法,据说是 Trie 树上的奇技淫巧,不管了。
典题
题意
给定 个二元组 ,任意重排为 ,最小化 。
考虑相邻的 ,这样排序较优需要满足 ,两边除以 可得 ,也即 从小到大排序最优。以下令 。
Ex 题意
给定 个二元组 序列,要求每组内先后顺序不能改变,合并成一个序列,仍然最小化该式。
考虑同一个序列中相邻两项,若 则填完 后一定接着填 ,证明可以考虑最终序列中若这两项之间有元素,对其 均求和后求 值。若 则可以提到 之前,若 则可以放到 之后。由于 ,两个条件至少有一个成立,于是一定能调整到 相邻。
之后通过这样的邻项合并可得若干 不降的序列,之后贪心取当前 最小的可取元素即可。
Ex Ex 题意
每次找非根节点中权值最小的,若其父亲被填入序列,则必然将该点立刻填入序列。于是将其与父亲合并,产生 的代价,得到一个 的新点。此时父亲的权值变小了,可以用堆维护这个过程,复杂度 。
HDU6326 Problem H. Monster Hunter
题意
给定一棵树,除根节点 外每个点上有一个怪物,需要消耗 生命清除,之后可以获得 生命。走到一个点前需要清除其父亲节点上的怪物,求要清除所有怪物需要的最小初始生命。多组数据,。
题解
考虑没有树的限制,可以任意排序时怎么做。对于相邻两项 ,此时贡献为 ,若交换则贡献为 ,要最小化贡献。以 为基准,若 不同号容易比较,一定是 的排在前面,这也是容易感性理解的。
讨论同号情况,若均满足 ,则是将 之一减小后取最大值。显然只有减小初始最大值有效,于是一定会把初始最大值放在后面,即按照 从小到大排序。若均满足 ,有 。将原式简写成 后有 ,手推一下就会发现原式比较大小与 比较大小是等价的。于是变为比较 的大小,得到按 从大到小排序最优。
综上,前面 部分按 升序排序,后面 部分按 降序排序,容易发现这样的大小关系具有传递性等性质,也可以编出一个权值 并以此排序。上树之后考虑邻项合并,即找到当前非根节点中权值最优的点,将其与父亲合并。用堆和并查集维护即可,复杂度 。
CF865D Buy Low Sell High
题意
给出每天的价格,每天可买入一次或卖出一次,也可以什么都不做,最大化净收益。。
题解
考虑依次决策每天的行动,可以在这天买入,之后某天卖出;或者找之前价格最低的一天买入,在当天卖出。使用堆维护此前没用过的价格,若最小值比 小则可以匹配。然而这样贪心是错误的,原因是最优解中可能跳过中间的元素进行匹配。
考虑支持反悔操作,对于前面选择过的 配对,需要支持将其改成 ,其中 。注意到此时收益会增加 ,于是对于每个 均在堆中额外加入一个 作为代价即可,当然每天仍需加入一个 表示直接在这天买入。由于 在反悔后实际上不被操作,两个均取是没有问题的。复杂度 。
QOJ9222 Price Combo
11.07 构造
CF862C Mahmoud and Ehab and the xor
题意
给定 ,构造 个不超过 且两两不同的非负整数使得异或和恰为 。。
题解
只有 无解,先判掉就行。
- 增量
考虑构造若干个异或和为 的元素,比如 ,以及任意 ,之后按照对 取模的结果分讨一下,用不超过 个数凑出 ,再拼上若干个大小为 的组即可。
- 随机 + 微调
考虑随机出 个数,此时其异或和 大概是均匀随机的,判断最后一个数 是否出现过即可。由于可选值域比 大不少,合法概率较高,期望线性次就能取到一组解。
去随机的话,随机或直接填 个数,之后后两个数 ,这会形成若干个数对。由于值域足够大,根据抽屉原理一定存在合法的数对。只需要特判一下 的情况即可。
- 组合模式
这题好像没咋体现啊,不过构造题主要是这三种做法。
CF468B Two Sets
分析一下发现是必须在同一个集合内。
P3588 [POI 2015 R2] 沙漠 Desert
优化建图,差分约束。
差分约束同时最优化所有非定点的值。
子问题:分治、倍增、递归、增量、差分、迭代、微调。
11.09 优化
- 匹配
点覆盖:用点集覆盖所有边。
独立集:没有公共边的点集。
两者互为补集,即任意一个点覆盖的补集一定是合法独立集,反之亦然。
Konig 定理:二分图中,最小点覆盖中的顶点数量等于最大匹配中的边数量。
二分图最大权匹配:补上 边可转化为最大权完美匹配。
顶标:给每个点一个标号,满足边权不大于两端标号和。
这样匹配权值一定不超过标号总和,于是找到一组标号和一个匹配权值相等,即为最大匹配权值和。
需要相等边组成的子图存在完美匹配,仍然考虑增广过程。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...