2023-7-10 #65 我守着虚构的幻想 那些我珍视的模样
——不安琪《失败品》
448 QOJ6669 Mapa
这谁想得到啊??????????????????
插出一个模 1e9+7 下的多项式,保存系数。
449 CF1456E XOR-ranges
感觉挺难的。
类似 406 HDU6358 Innocence,我们将每一段拆成 个 trie 上的区间,每一个形如“固定前缀 ,长为 的后缀任选”,并将选择 内的数改为在这 段区间内选择一个。
假设已经完成选择,考虑如何计算答案。从低位到高位扫描序列,假设扫到了第 位。若存在第 位已经确定的数,在对应位置劈开序列,得到的两段仍是形态一致的子问题。否则所有数第 位任选,贡献即“目前区间两端第 位是否相同”(其等价于在笛卡尔树上贪心)。
若没有完成选择,我们沿用上面的结构。记 表示考虑到第 位,目前区间是 的答案,转移即:
- 枚举一个位置分段,选择其恰好固定到第 位的一段区间。
- 断言所有数第 位都任选,递归到 的问题,并统计对应的贡献。
对于任意区间,其分解出的长为 前缀至多 种,于是复杂度 ,写成记忆化搜索形式比较方便。
450 P7722 [Ynoi2007] tmpq / CF1545F AquaMoon and Potatoes
感觉挺烂的。
首先把题意转换为 的三元组数量。
根号分治,小的数每次修改后可以暴力 dp,而对前缀和的影响可以使用 的分块统计。
对于每个大的数单独离线扫一遍序列,问题形如单点修改(总共只有 次),维护前缀信息和,同样地使用 分块维护即可。
不算难写,复杂度 。
451 牛客多校2021 Day3 D Count
枚举被 ban 掉的子集,枚举行列是否被 ban,枚举两条对角线是否被 ban 进行容斥,那么方案数就是剩余的点数选 减钦定掉的点数。
剩余的点数事实上可以表示成没有被 ban 的行数量乘列数量减去一个 的值(修正对角线的贡献),于是我们 dp 行列是否被 ban 做一个背包状物即可,注意 dp 顺序应该是每次剥掉正方形的最外层一圈。
复杂度 。
452 牛客多校2021 Day3 G Yu Ling(Ling YueZheng) and Colorful Tree
纯 shaber 题。
注意到可以使用 bitset,只需维护一个点的祖先集合,权值 某值的结点集合,以及某个数的倍数集合。
第一部分直接存空间不太行,树上撒 个点树分块,暴力跳散块改 bitset 空间就是线性了。
第二部分由于有权值相同的情况,不能直接分块,但维护一个分块的结构,根号重构就好了,调一调块长空间也是线性的。
第三部分套路地根号分治一下,倍数数量多就单独给权值开一个 bitset,调调块长空间应该是 的。
复杂度 。
453 uoj#659. 【ULR #2】Picks loves segment tree IX / AGC061E Increment or XOR
咕咕咕。
454 ARC119F AtCoder Express 3
不知道怎么到银牌的。
从前往后 dp,一个朴素的方法是直接记录最后一个数的类型,以及最后一个 A/B 到源点的最短路,这样是三次方的。
注意到若两维差距大于 ,我们一定不用关心较大的一维(转移一定不优),不妨直接令其对另一维 chkmin。正确性很好说明,考察下一个这种类型字母即可。
复杂度 。
455 ARC126F Affine Sort
很不错的题目,感觉不止铜牌难度。
令 为固定 时 的对数,使用 O'Stolz 定理——
我们将 写成 ,当 时 均可看作 内随机实数,于是问题转变为:
称实数对 是好的当且仅当 单增( 是 的小数部分),求二维平面上所有好的实数对 构成的区域的面积。
先考虑如何判定一个 有解,即依次遍历 不会走完一个圆,可以写出,易知其充要性:
若一个 有解,其 的限制也很好刻画——我们只需将原点通过 平移到 内。
现在考虑如何找到对应的 ,注意到 这个函数关于 是不超过 段的分段一次函数,加起来也只会有 段,而且由于 ,每一段都是平的,这就很好处理了。
于是直接排序找到这样的段,对 积分即可,复杂度一个 。
456 U105261 子序列删除问题
最小割模型是经典的,我们求出每个位置为结束/开头的 LIS 长度 ,将所有可能在 LIS 中的数取出来,按 分层,相邻层之间可以转移的点连边,每个点内部拆点限流 ,最小割即为答案。
我们将每一层按照下标排序,容易发现每个点的后继一定是一段区间(下标限制一段后缀,值限制一段前缀),且一层内的点从前往后区间端点不增。
我们断言,每次贪心地选择一条字典序最小的增广路,且不使用反向边,这样增广出的最大流同样最优。可以通过说明最大流路径不交叉(否则可以调整)来完成证明。
可以暴力模拟这一策略,每次遍历完一个点可以将其删去,因为若成功增广,其内部流量已经流满,否则这个点也无用,于是只需使用并查集找到区间内第一个未删去的点。
最小割的构造考虑一经典方法——从源点开始 dfs。不难发现上述的算法只会增广 条边,我们将这些增广产生的反向边与原图的边放在一起做 dfs 即可,复杂度 。
457 AGC056D Subset Sum Game
为啥 hzr 觉得简单啊。
不妨考虑 为奇数的情况,我们枚举 alice 选择的哪一个数并将其删去,一个策略是对剩余的数匹配,bob 取一个数后 alice 立即取其匹配。显然按照值排序相邻匹配最优,此时只需判断是否有奇数位置和加 与偶数位置和加 在 内。不难证明其同时为下界,上界,于是可以做到 。
为偶数的情况是类似的,alice 选择一个数将其忽略并构造一组剩余数的匹配,判定方法与上面相同。此时若 bob 取匹配内的数可以递归到更小的子问题,若 bob 选了空出来的数,alice 可以随便选一个数,剩下的问题仍在我们的考虑之中,直接模拟可以做到平方。
更具体地,我们可以计算出空出来哪个数最优——我们将 插入剩余序列,排序后匹配上的数即为最优解,于是可以做到线性。
证明:懒得写了,挂个链接。
458 AGC060D Same Descent Set
为啥 zyf 觉得难啊。
枚举 descent 集合 ,令 为对应的排列数量,即对 求和。
使用经典的容斥方法,枚举一个子集 表示我们强制 上升, 集合内则任意,带 的容斥系数——
转而枚举 ,那么合法的 数量为 ,并集不好刻画,不妨写出 ,枚举其交 ,写出容斥系数时你会发现系数为 ,因为这就是 的组合意义,此时问题得到解决。
梳理一下流程:构造一段的 GF ,使用 Sequence 构造得到拼接 内的 descent 后一段的 GF,将系数平方后再使用 Sequence 构造拼接 内 descent 即可。
只需多项式求逆,复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2022-07-10 2022-7-10 #10 CF1644F & CF643F & CF1588F