AT 随机做题 I

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/938610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

moni 32

事实是我好久没写模拟赛的总结了, 想了想这点东西当日记还是太糖了,(主要是不想写) 直接来吧,预估 \(100 + 100 + 65 + 0\),实际 \(100 + 0 + 65 + 0\)。 挂分原因,交错代码了。 故事是这样的。 我感觉我自己 T…

git 舍弃当前所有修改

在 Git 中,如果你想要舍弃当前所有未提交的修改(包括工作区和暂存区的更改) git reset --hard这会:重置暂存区(index) 重置工作区(working directory) 丢弃所有未提交的修改可选:同时清理未跟踪的文件(如新添…

2025.10.17——1蓝

提高+/省选- P3230 [HNOI2013] 比赛 补题,前天开的暑假集训题,看了题解后花了几天时间理解。很精妙的记忆化搜索。

C# 使用 using 关键字间接实现只读局部变量的方法

众所周知,在 C# 里面是没有只读局部变量的功能的。但有趣的 C# 语法让咱可以使用现有的 using 关键字间接实现只读局部变量在 C# 里面引入只读局部变量是一个存在 C# 语言设计仓库里面很久的讨论,详细请看 https://g…

高校与某中心共建机器人技术教育项目

某机器人与汉普顿大学合作建立机器人学位项目,包括新建研究实验室、人工智能与机器学习教职岗位、高级课程指导,以及K-12编程扩展计划,旨在培养多元化机器人技术人才。某机器人与汉普顿大学合作建立机器人项目 某中…

2025年国际物流服务领域优质品牌最新推荐排行榜 —— 聚焦行业头部企业核心优势与选择参考

在全球化贸易深度推进的背景下,跨境电商行业规模持续扩大,国际物流作为连接全球市场的关键纽带,其服务质量与效率直接影响跨境商家的运营成本、客户体验及市场竞争力。然而,当前国际物流市场品牌众多,服务能力参差…

WordPress维护模式完整指南:手动实现与插件方案

本文详细介绍了WordPress网站维护模式的两种实现方式:通过手动添加PHP代码到子主题的functions.php文件,或使用LightStart插件。包含完整代码示例、启用禁用方法和注意事项,适合开发者在进行重大更新时使用。WordPr…

Lean语言如何连接数学与编程

Lean作为函数式编程语言和交互式定理证明器,在形式化数学、软硬件验证、AI辅助数学与代码合成以及计算机教育等领域具有广泛应用。文章详细介绍了Lean语言的设计理念、核心功能及在多个开源项目中的实际应用案例。Lea…

Github上文本切分相关的优秀项目

Github上文本切分相关的优秀项目Github上有几个不错的文本切分相关的优秀项目,涵盖了不同技术方向和应用场景:AntSK-FileChunk特点:基于语义理解的智能文本切片工具,支持PDF、Word、纯文本等多种格式,通过语义分析…

微信机器人开发

微信机器人开发、微信二次开发文档、微信个人发消息api "WTAPI"是一个基于微信开放平台的二次封装API服务,旨在简化开发者与微信对接的流程。提供了丰富的功能API,包括好友管理、消息管理、群管理、朋友圈…

原型链污染学习

目录示例题目题目1题目2思路如何找到修改的变量?(题目1思路&步骤)题目2思路题目2做题步骤 前两天在打几场新生赛练手的时候,遇到了两三道关于python原型链污染的基础题,发现这方面知识点还是匮乏,所以以这两道题目…

重新认识 Golang 中的 json 编解码

欢迎访问我的个人小站 莹的网络日志 ,不定时更新文章和技术博客~json 是我的老朋友,上份工作开发 web 应用时就作为前后端数据交流的协议,现在也是用 json 数据持久化到数据库。虽然面熟得很但还远远达不到知根知底…

(二)CUDA在Windows系统上的编译运行方法

前言 本文记录cuda库在windows系统上的编译运行的3种方式,主要包括命令行编译、VisualStudio2017编译、VSCode上编译等。 ​一、windows环境下CUDA环境配置 1.下载MinGW以使用GCC编译器 下载MinGW链接:https://githu…

关于价值原语与AI元人文构想的对话全记录——DeepSeek研究

关于价值原语与AI元人文构想的对话全记录——DeepSeek研究 基于这份详尽的对话记录,我们可以进行一次深入的、系统性的研究,超越表面的技术讨论,探寻其背后的哲学意义、现实可行性及未来路径。 这份对话展现了一场思…

251017

251017为了满足别人给我的不可能完成的任务,我编了一个又一个的故事,虽然这些故事从来没有真实的发生过,但一定是别人想发生的,我来像母亲一样哄骗他们,大家一起在白天做梦,真真假假假假真真,反正明天不是阴天就…

关于价值原语与AI元人文构想的对话全记录

关于价值原语与AI元人文构想的对话全记录 第一阶段:价值原语的哲学解析 用户:帮我分析,价值原语,如尊严,可以如何继续拆分 助手:从伦理学、哲学和价值理论角度对“尊严”进行结构化拆分:自主性 - 个人决策控制能…

升鲜宝生鲜配送供应链管理系统,辅助开发工具,《多语言自动翻译与导出工具(WinForms版)》开发文档 及 阿里云机器翻译,数据库Mysql .net 全部源代码

多语言自动翻译与导出工具(WinForms版)开发文档 一、系统简介 本工具是一款用于自动翻译多语言字段并导出国际化数据的桌面应用,支持从 MySQL 数据库读取中文内容,调用阿里云机器翻译 API 自动生成 繁体中文 (zh-T…

植物大战僵尸全系列下载 PVZ植物大战僵尸全集版分享下载 原版民间修改版含安卓手机+电脑+ios各平台

PVZ植物大战僵尸全集版分享下载 原版民间修改版含安卓手机+电脑+ios各平台 《植物大战僵尸》凭借其经典的玩法,催生了大量官方版本和极具创意的民间改版。以下我将为你…

Pytorch66页实验题

import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt import numpy as npprint("林丽坤参与了 …