2024.11.1 近期练习
板刷 ARC,再不刷就退役了。
ARC185A mod M Game 2
猜结论题,两个人牌的总和是
显然手牌还有大于
和取模
剩下的情况所有牌都出完,先手胜。
ARC185B +1 and -1
假设已知目标序列
贪心地考虑
ARC185E Adjacent GCD
很明显地拆贡献。同时对于每个前缀算答案启示我们增量法求答案。
加入
考虑把
然而这么做复杂度需要调和级数,无法通过。考虑对于每个
我们原本求的是
考虑令
则
ARC184A Appraiser
很几把唐氏这个题,考虑每
每个组至少有一个真币;并且一定存在全部都是真币的组,这个可以求出来。
那么我们已知一枚真币的情况下再去对未确定的组判断即可。
ARC184B 123 Set
注意到,所有数可以按照去掉
对于每组都是一个有向图,分为若干层,每层的每个点向下一层的该位置和下一个位置连边。
相当于覆盖所有点,这玩意儿可以状压 dp,只需要支持超集
然后注意到有若干组的图都是相同的,这个用一下整除分块套外面即可。
ARC184D Erase Balls 2D
考虑最后点的形式,显然为若干个矩形从左上角到右下角连起来。
所以直接做一个 dp 即可。但是有一个问题就是会算重。
我们需要钦定一个矩形里面的点不能被两个首尾相连的矩形全部包括即可。
也就是相当于构造双射,使得每种点的集合映出出来的矩形集合是唯一的。
ARC183B Near Assignment
盲猜需要分讨
我们需要保证
而最后两个
所以充要条件是若存在
ARC183C Not Argmax
简单区间 dp,每次取出最大值之后划分子任务。
ARC183D Keep Perfectly Matched
最大化
贪心地,取重心为根,既使得
钦定匹配边为
对于根的每个儿子是独立的,只需要 dfs 一遍即可求出第几次删第几个点。
考虑到一个点只有一个匹配边出边,所以堆维护所有非匹配边儿子,每次贪心地取出大小最大的子树。
ARC183E Ascendant Descendant
考虑倍增处理区间 lca,然后可以处理出一个
然后如果取出所有区间直接做,是一个染色模型,发现是做不了的,需要找性质。考虑区间的性质。
注意到,区间是要么包含要么分离的。事实上区间除了这个性质没有别的性质。
所以这就是一个区间树,考虑从深度深的往深度浅的填。
这个染色模型可以见我的一篇论文。——关于一类染色计数问题的研究。
有一个严重的问题就是
也就是说一个区间如果其最后没有多出来的位置就不能跨越。
ARC182C Sum of Number of Divisors of Product
典题但不会。考虑只有
那么转移就容易了,设加入
那么
ARC182D Increment Decrement Again
逆天题。以下的内容大抵是抄袭题解。判掉
看成
然后发现
ARC181B Annoying String Problem
结论题,首先可以解方程得到
ARC181C Row and Column Order
考虑将令
考虑
不难发现此后只要交换一下列使其为
ARC181D Prefix Bubble Sort
考虑一次冒泡排序,从第一个位置开始,其会被冒泡到第一个比他大的位置,这个位置接着冒泡。
那么逆序对数发生的变化就是向前移动一个位置的位置的数量。
所以考虑拆贡献到每个位置向前移动多少。
如果当前冒泡的前缀包括了
ARC180B Improve Inversions
首先答案上限是
考虑从小到大枚举
这么做是对的,第
排序后从大到小交换相邻的两个也是可以做到把所有能交换的都交换,即能顶到答案的上限。
ARC180C Subsequence and Prefix Sum
简单 dp。
ARC180D Division into 3
三种情况对应最大值所在的是第几个区间。
如果是中间那个区间,那么贪心地,左右两个区间肯定大小为
如果是边上那个区间,那么贪心地,中间那个区间大小肯定为
即求
上述这个考虑单调栈+扫描线处理。
ARC179C Beware of Overflow
考虑归并排序,然后每次合并最大和最小的两个,然后合并出来的和在二分其位置插回去。
ARC179D Portable Gate
很明显的树形 dp+换根。状态有两种,
设
设
关于
那么,
最后直接考虑换根 dp 即可。换根有一个无需脑子的写法就是每个点维护 set 存当前所有儿子。
ARC179E Rectangle Concatenation
考虑
不妨设
那么
所以我们对于
关于前者的转移直接计算,后者的转移需要用哈希表存一下对应
ARC178C Sum of Abs 2
巨 jb 简单,显然背包,注意到物品的种数是根号级别,于是做完了。
ARC178D Delete Range Mex
观察到我们删数一定是从大往小删,删了某个数之后会导致比他小的数都只能放一边。
然后划分子任务做区间 dp 即可,前缀和优化。
ARC177D Earthquakes
不难发现可以把电线杆划分为若干个区间,他们之间互不影响。答案是所有这样的区间概率只积。
而在一个区间里的所有电线杆如果出现地震,会把左边或右边的所有电线杆都带倒。
考虑处理一个区间的答案。考虑若
若当前只剩
因为
相当于解决前缀最小值的个数,用单调栈解决。
在这个题我的错误是执着于设区间为状态;应该考虑直接答案的计算。
ARC176C Max Permutation
注意到如果存在两个限制共一个端点,即
若
若
考虑从小到大枚举边并删边,最后剩下的就是若干条独立的边和若干个点的限制。
判掉边的限制和点重合的情况,最后从小到大算贡献乘起来即可。
ARC176D Swap Permutation
考虑拆贡献,绝对值看做距离,距离的话枚举其间所有值,若
那么现在所有数都只有
每对相邻的形态只有三种:00,11,01/10。考虑跑
ARC175D LIS on Tree 2
考虑先构造出每个点的 LIS 长度使得加起来为
注意到 LIS 长度差分后的值只有
考虑把所有子树大小从大到小排序,贪心构造出一种方案。
考虑给每个点赋值,LIS 为
那么对于 LIS 增加
ARC174C Catastrophic Roulette
两个人的操作是一样的,所以我们只用区分先后手。
考虑 dp,设
递推,对于
ARC174E Existence Counting
考虑枚举第一个不满足最高位限制的位置,设当前未填的有
第一个不满足最高位限制的数是什么我们也需要枚举。设满足这个条件的数的集合大小为
这
在这个集合里的数的出现次数是
所以我们需要维护三个集合:已填的数;未填的数可以填进当前位的;未填的数不可填进当前位的。
显然,第二个集合是未填的数集合一段前缀;第三个集合是一段后缀,简单维护即可。
考虑树状数组维护差分信息。
ARC173C Not Median
套路地将大于
观察到
那么,如果有相邻的
所以枚举
ARC173D Bracket Walk
逆天。将左括号视为
由于是一张强联通图,所以一定存在一个环包括所有点,然后相当于插入环,一个环可以绕若干圈。
如果图的环都是和为
所以当前仅当正环或负环独立存在的时候不合法。考虑 spfa 判负环。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
2023-10-31 2023.10.31 USACO 2020 选做
2023-10-31 2023.10.31 Online test