Solution Set #10
博主把趣题系列的大部分题做完了,准备开始随机做题了,写记录的时候会筛掉一些不太好的题。
你妈的,我怎么还是这么菜。
160 UOJ 91 最大异或和
维护差分数组的线性基,那么问题就变成了
把操作离线下来,那么元素可以看成三元组
https://uoj.ac/submission/676825
161 NOI 2017 整数
直接看这个
162 CF1336E1 Chiori and Doll Picking (easy version)
建立线性基转化问题。注意到
对线性基 mitm,第一部分搜索线性基
https://codeforces.com/problemset/submission/1336/245312849
163 P9999 [Ynoi2000] tmostnrq
有个 soft-
- 点在虚树外:往靠近虚树的方向移动。
- 点在虚树一条虚链上:找下一个到达虚树上点的位置,这个可以对于每条链建立个前缀和数组表示两边点的数量差,二分以下就行。
- 点在虚树的一个点上:直接预处理每个点经过每个后缀的操作之后到哪,预处理的方法可以考虑先操作一步然后归到上面的情况,递推。
这么做的动机是这类题的一种经典做法:快速处理平凡操作,暴力处理不平凡操作。
polylog 做法是直接考虑扫描线,每次把点在
代码鸽。
164 qoj7859. Bladestorm
容易得到一个贪心跳跃的方法:如果下一个位置距离当前位置小于
如果把每个点向它的下一个点连边,那么可以得到一棵树,我们希望求出树上
分块维护树结构,复杂度
https://qoj.ac/submission/326513
165 2024.2.13 考试 T2
区间 DP 的转移式子是:
。 。
二分之后可以利用 bitset 做到
166 loj4040. 「SNOI2024」拉丁方
拉丁方填数可以看作二分图完美匹配划分问题,或者说二分图最小边染色。有结论:二分图最小边染色是点度数的最大值。
求出一组最小边染色的方法如下:动态加边
提交记录 #2002988 - LibreOJ (loj.ac)
167 2024.2.13 考试 T3
三元环计数考虑容斥,那么我们需要求:
- 每个点的度数。
- 三个矩形两两相交的矩形对数。
第一个问题是平凡的,考虑第二个问题。
扫描线,在矩形交的左端点位置统计答案。我们需要维护一个 DS,支持:
- 加入 / 删除线段。
- 求出某个区间内选出两个相交线段的方案数。
对于第二个问题使用
- 区间加。
- 查询区间
的和。
平凡的。
168 ARC118F Growth Rate
对插值定义域问题的处理。
考虑插值。一般的 DP 转移式子为:
DP 第二维和值域有关,考虑插值优化。可以把转移看作先拉伸然后做一个前缀和的过程。然而由于我们没有定义实数域,所以拉伸后的结果未必是多项式。
考虑另一个转移:
此时拉伸变成了收缩,收缩之后的每一项对应到原多项式时都被定义过了,所以拉伸后仍然是多项式。
做插值,看似复杂度是
Submission #50246111 - AtCoder Regular Contest 118
169 loj3698. 「USACO 2022 US Open Platinum」Hoof and Brain
图上博弈题都好牛啊。
Hoof 有两种方法似掉:
- 走到绝路了。
- 两个棋子堵一起了。
先解决第一个。对反图拓扑排序,遍历过的节点就没救了,我们不妨把它们删掉。
考虑第二种情况,构造如下算法:
- 定义
。 - 如果
所有出边颜色均为 ,则把 赋值为 。
容易发现,如果两个点颜色相同,那么它们一定能堵到一起。可以证明这是充要的,因为不满足条件的话 Hoof 有策略使得两点颜色始终不同。
启发式合并每个点的入边和出边,复杂度
提交记录 #2003364 - LibreOJ (loj.ac)
170 loj3697. 「USACO 2022 US Open Platinum」262144 Revisited
考虑求出单个问题的答案。从序列不降的情况入手,假设序列为
尝试将这个做法拓展到原问题。我们直接对整个序列执行上面的算法,并尝试在这个序列上找到每个子区间的信息。尝试对于新序列上的每个元素上维护两个集合
值为
总结一下,上述算法分成两个部分:收缩连续段,合并连续段,我们分别说明两个部分的复杂度:
- 对于收缩连续段,一次收缩会在
的时间内删除 个元素,由于每个元素只会被删除一次,所以复杂度为 (注意当 的时候,我们忽略收缩操作)。 - 对于合并连续段,注意到合并之后的集合都会进行至少一次收缩操作,所以需要合并的集合大小之和同样是
。使用上述复杂度为 的方法,分治合并多个集合,可以得到总复杂度为 。
综上,问题可以在
提交记录 #2003538 - LibreOJ (loj.ac)
171 loj4042. 「SNOI2024」公交线路
条件等价于存在一个点
点减边容斥,枚举点
考虑优化。随便钦定一个根,那么我们只容斥
提交记录 #2003737 - LibreOJ (loj.ac)
172 loj2330. 「清华集训 2017」榕树之心
从判断根的可行性开始考虑。先判掉奇偶性的问题,有几点观察:
- 如果根是重心那么一定能完成构造。
- 如果根不是重心,那么一定朝重心方向走若干步,走回来之后在将剩下的点匹配。
我们希望走的点越多越好。设计
回到判断任意点的问题,实际上只需要把到根的路径缩成一个点,归到上面的问题。可以证明一定存在对应的构造方式。
所以实际上是 DP 题啊,我以为有什么充要条件来着……
提交记录 #2004600 - LibreOJ (loj.ac)
173 loj3773. 「APIO2022」排列
考虑一个
注意到
提交记录 #2005266 - LibreOJ (loj.ac)
174 loj3805. 「JOI Open 2022」长颈鹿
发现合法序列的构造方式是:每次把最小值或者最大值放在开头或结尾。
做到
考虑这个转移在干什么,实际上就是不断缩小一个矩形,使得每个矩形的一个边角上都有一个点
注意到转移的权值都是
因为数据随机,所以
175 loj3806. 「JOI Open 2022」放学路
问题在广义串并联图上是容易的。
考虑非广义串并联图怎么做,发现
偷懒没有删点,还是能过。
176 qoj7439. 铃原露露
半个月前口胡的题(
考虑构造一个判断条件,一个简单的构造是
考虑 set 启发式合并求出范围。每次插入的时候找到前驱和后继,用线段树做 chkmin/chkmax 即可。复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】