尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

AT 随机做题 I

AT 随机做题 I
📅 发布时间:2026/6/18 23:15:02

Randomly Problems Solving at AtCoder I

质量评分 \(\in[0,10]\),分为 \([0,4),[4,7),[7,10]\) 三个梯度,评分和难度弱相关。

上次更新:2025/10/16

注重思路。

[ABC 134 F] Permutation Oddness

\(5\) 分。

排列计数。

首先要考虑的是生成排列的方式,发现 \(i-p_i\) 确定大小关系之后可以拆掉绝对值,那么两项的贡献就可以独立计算,此时只需要 \(1\sim n\) 逐个数确定贡献的方式就能保证生成排列(重点在 \(1\sim n\) 对每个数都确定)。

然后考虑具体的方式,将 \(i\) 叫做位置,\(p_i\) 叫做值,那么一定是位置和值匹配,按大小顺序 dp,就能知道当前的位置/值贡献的是 \(+\) 还是 \(-\)。

设 \(f_{i,x,y,j}\) 表示处理到了 \(i\),前面产生了 \(x\) 个比 \(i\) 小的位置,\(y\) 个比 \(i\) 小的值,且当前奇妙度为 \(j\) 时的方案数。

复杂度 \(O(n^5)\),交上去过了,点开题解发现都是 \(O(n^4)\) 做法。

有点小丑了,似乎是可以把位置和值的信息只用一维状态表示,看了一下我的代码确实是这样。

如果你推了转移方程,你会发现 \(x\) 和 \(y\) 是同增同减的,也就是说有效的 \((x,y)\) 一定满足 \(x=y\),然后就能 \(O(n^4)\) 了,好唐啊。

[ARC 100 D] Colorful Sequences

\(7\) 分。

计数。

好,难。

观察数据范围,初步估测时间复杂度在 \(O(nk)\) 左右。

有两个疑问:

  • 怎么计数 colorful 序列?

  • 怎么计数 \(a\) 在所有 colorful 序列中的出现的次数之和?

不妨将其视为两个子问题,进行一些基本的思考后,不难看出来后者严格包含前者,所以现在先来着手解决第一个问题。

怎么计数 colorful 序列?

限制是至少存在一个区间为 \(k\) 阶排列,怎么刻画至少一个?怎么刻画 \(k\) 阶排列?直接用组合数算大概率会记重,大量的经验说明此时思不应该思考怎么正着计数并做到不重不漏,应该容斥。

所有序列的个数为 \(k^n\),减去非 colorful 的序列个数就得到了 colorful 序列的个数。

非 colorful 序列,需要保证不存在一个区间为 \(k\) 阶排列,看着去就比之前的限制好刻画多了。

考虑 dp,设 \(f_{i,j}\) 为考虑了 \(i\) 个数(当前序列长度为 \(i\)),当前考虑到了第 \(i\) 个数,当前极长的不重复后缀长度为 \(j\) 时的方案数,有以下两个转移,

\[f_{i,j}\times (k-j)\to f_{i+1,j+1} \]

选取前 \(j\) 个数都没有的,使得长度加一。

为了保证不存在 \(k\) 阶排列,转移需保证 \(j+1<k\)。

\[f_{i,j}\to f_{i+1,p} \]

其中 \(1\le p\le j\),选取前 \(j\) 个数中的数即可得到 \([1,j]\) 的任意一个新后缀长度。

前缀和优化后转移总复杂度为 \(O(nk)\)。

至此,这个子问题得到了解决。

怎么计数 \(a\) 在所有 colorful 序列中的出现的次数之和?

感觉有点棘手,不妨按照解决上个问题的策略,继续正难则反,容易得到所有序列中 \(a\) 在里面出现次数之和为 \((n-m+1)\times k^{n-m}\),现在要的是所有非 colorful 序列中 \(a\) 的出现次数之和。

限制是不存在一个区间为 \(k\) 阶排列,如果 \(a\) 本身就包含了一个 \(k\) 阶排列在里面,那么结果显然为 \(0\)。

这启示对 \(a\) 的形态进行分类讨论,因为序列中的那些 \(k\) 阶排列和 \(a\) 的关系并不清楚,而且存在多种情况,更重要的是会直接影响到计数。

除去上面的情况,\(a\) 中的数可能依然互不相同,但此时满足 \(m<k\),不然会归为上面的情况。

此时对 \(a\) 进行置换,其实结果还是不会变,所以说 \(a\) 的具体元素并不重要。

那么就去数所有非 colorful 序列中长度为 \(m\) 且里面的数互不相同的区间出现次数,这些区间通过置换都能成为 \(a\),但是会记重,不过这里只需要将结果除以 \(A(k,m)\) 即可,将置换后本质相同但置换前不同的序列进行了合并。

怎么求,可以看作对每个位置 \(i\) 求包含以 \(i\) 结尾(右端点为 \(i\))的、长度为 \(m\)(大于 \(m\) 的也包含 \(m\))的、数字互不相同的子区间的非 colorful 序列个数。

发现这个东西的求解可以自然地嵌入求 \(f_{i,j}\) 的过程,具体地,设计 \(g_{i,j}\),和 \(f_{i,j}\) 唯一的差别在于 \(j\ge m\) 时加上 \(f_{i,j}\)。

对于 \(a\) 有重复数的情况,此时 \(a\) 在序列中的两边独立,不会有 \(k\) 阶排列横跨 \(a\),所以分别处理出极长的没有重复数字的前后缀,然后枚举 \(a\) 的起点位置,用上面类似的方法即可。

[ABC 136 F] Enclosed Points

\(4\) 分。

计数。

首先注意到每个点的 \(x,y\) 坐标分别互不相同,这使得某些细节上的问题得到了避免。

套路地考虑每个点的贡献。

对于一个点。首先分它在不在 \(T\) 里,若在,那么它会贡献到 \(2^{n-1}\) 个 \(T\) 中,毕竟它自己已经选上了。

如果不在,先算出这个点左上、左下、右上、右下的点数 \(c_1,c_2,c_3,c_4\)。

要保证它一定被 \(T\) 形成的矩形包含,则一定要让左上、右下都存在至少一个点同时属于 \(T\),或者右上、左下,其他区域则可以随便选。

两种情况的方案数分别为,\((2^{c_1}-1)(2^{c_4}-1)2^{c_2}2^{c_3}\) 和 \((2^{c_2}-1)(2^{c_3}-1)2^{c_1}2^{c_4}\),不过他们会有记重,单步容斥减去记重的方案数 \((2^{c_1}-1)(2^{c_2}-1)(2^{c_3}-1)(2^{c_4}-1)\) 即可。

求 \(c_1,c_2,c_3,c_4\) 就是二维数点的板子,树状数组加扫描线。

[ABC 214 G] Three Permutations

\(6\) 分。

一个排列的问题就是经典的错位排列问题,可以使用容斥解决。

对于这题同样设 \(f_i\) 为钦定 \(i\) 个位置不合法(\(r_i=p_i\) 或 \(r_i=q_i\))的方案数。

那么答案就是,

\[\displaystyle \sum_{i=0}^n (-1)^i \times f_i\times (n-i)! \]

\(f_i\) 变得不太好求,因为要求没有重复的数字,在两个排列里去选是可能会选重的。

那就考虑建图刻画限制,给每一对 \((p_i,q_i)\) 之间连一条无向边,则变为选 \(i\) 条边,并对每一条边,让其选择一个端点依附上去,一个端点不能被依附多次,求方案数。

那么建出来的图一定是若干个环。

一个点至多被两条边依附(后文忽略自环,因为不影响),考虑拆点,把一个点 \(i\) 拆为 \((i,0)\) 和 \((i,1)\),分别代表两条边的情况,那么默认有连边 \((i,0)\to (i,1)\),对于 \((p_i,q_i)\) 有 \((p_i,1)\to (q_i,0)\),此时相当于将点拆为了两个状态,两点之间连边表示只能选这条边的端点之一,点内拆位两个点连边表示点内的状态只能二选一,是符合前面的限制的。

那么问题就转化为了若干环的独立集计数,是比之前的问题更熟悉、更好做的。

具体地,对每个环都做一遍 dp,求出选出 \(k\) 个不相邻的点的方案数,再开一维表示起点选不选就能转移了。

环之间的合并,本质是加法卷积,本题直接暴力做就行了。

[ARC 078 F] Mole and Abandoned Mine

相关新闻

  • 画图3D真好用 - Gon
  • 高校与某中心共建机器人技术教育项目
  • WordPress维护模式完整指南:手动实现与插件方案

最新新闻

  • 2026 海口靠谱的卫生间防水补漏公司推荐 top5 推荐 - 防水资讯
  • 佛山怎么登报?2026最新正规渠道办理方法 - 资讯纵览
  • 2026中国低度酒品类复购率驱动因素及标杆品牌适配指南 - 万事通达
  • 2026年AI写作辅助网站全景评测:这5款工具如何重塑学术生产力
  • 2026 惠州靠谱的卫生间防水补漏公司推荐 top5 推荐 - 防水资讯
  • 直流母线电压纹波补偿:SVPWM前馈算法原理与工程实践

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号