GJ Round (2024.11) Round 22~27

前言:

洛谷、博客园、CSDN 同步更新

点此 返回 GJ Round 目录(博客园)

博客园 可能食用更佳

Round 22 (11.4)

唯一一次快速补完了题

A

AT_arc077_a [ABC066C] pushpush

不懂这原题标号咋这么奇怪

给你一个序列 \(a_1 \dots a_n\),按照如下规则构造新序列:

  • \(a_i\) 插入序列末尾
  • 将整个序列反转

模拟 / 打表找规律:

  • \(n\) 为奇数时,答案为 \(a_n a_{n-2} \dots a_3 a_1 a_2 a_4 \dots a_{n-3} a_{n-1}\)
  • \(n\) 为偶数时,答案为 \(a_n a_{n-2} \dots a_4 a_2 a_1 a_3 \dots a_{n-3} a_{n-1}\)

时间复杂度 \(\mathcal O(n)\)

B

初始给定 \(n\) 个点 \((x_i,y_i)\),给两个点 \(i,j (i \neq j)\) 连边的代价为 \(|x_i-x_j|^3+|y_i-y_j|^3\)\(q\) 次询问,每次加入一条新边,求每次将所有点连通所花费的最小代价

对原图跑 prim 求最小生成树,保留 \(n-1\) 条边,再与新加入的 \(q\) 条边跑 \(q\) 次 kruskal,时间复杂度为 \(\mathcal O(n^2 + q m \log n + m \log m)\),其中 \(m=n-1+q,\log n\) 为并查集的时间复杂度,若是并查集继续使用了启发式合并 / 按秩合并可以优化至 \(\mathcal O(n^2 + q m \alpha(n) + m \log m)\),其中,\(\alpha(n)\) 为反阿克曼函数

实则还可以不跑 q 次 kruskal,直接 dfs 找环删除环上最大边边即可,时间复杂度为 \(\mathcal O(n^2 + q n)\)

C

给你两个长度为 \(n\) 的序列 \(a,b\),保证 \(\forall i,j \in [1,n] \cap \mathbb Z,i \neq j\),都有 \(a_i \neq a_j,b_i \neq b_j\),定义他们的距离为 \(\sum_{i=1}^{n} (a_i-b_i)^2\),求距离的最小值,答案对 \(998244353\) 取模,并求出最小化距离时所需要交换的次数

对于问题一,显然将 \(a\) 序列中的第 \(k\) 大与 \(b\) 序列中的第 \(k\) 大排在一起即可,易证

第二问直接 for 模拟一下每个数是否已到对应位置,总时间复杂度为 \(\mathcal O(n \log n)\)

D

魔法阵是一个任意大小的方阵,满足如下性质:

  1. \((i,j)\)\(a_{i,j}\) 个魔法石,则有 \(a_{i,j} \geq m\)
  2. 设魔法阵大小为 \(k\),任意从魔法阵中选出 \(k\) 个格子,满足任意两个格子不在同一行也不在同一列,那么选出的 \(k\) 个格子的石子数之和是相同的
  3. 魔法阵中对角线石子数之和不能超过 \(n\)

多测,给定 \(n,m\),求方案数,答案对 \(998244353\) 取模

容易发现,\(a_{i,j}=x_i+y_j\) 是一个合法的方阵

钦定 \(\min(x_i)=0\),则方阵与数列之间一一对应,此时 \(a_{i_j} \geq m\) 等价于 \(\min(y_i) \geq m\)

不妨将所有的 \(y_i\) 减去 \(m\),使得问题转化成至多 \((n-km)\) 个石子放入 \(2k\) 个格子,且前 \(k\) 个格子至少有 \(1\) 个没有的方案数,容斥后得:

\[ans= {n - km + 2k\choose 2k} - {n - km + k \choose 2 k} \]

询问时间复杂度为 \(\mathcal O(\sum \lfloor \frac{n}{m} \rfloor)\),然后预处理逆元的复杂度只需要 \(\mathcal O(V)\) 即可,其中 \(V\) 为值域大小

Round 23 (11.11)

后三题紫紫黑,GJOJ 真是蒸蒸日上

A

给定一个长度为 \(2n\) 的扑克牌,初始第 \(i\) 张牌的权值 \(a_i=i\),每次进行一次切牌操作,即将 \(a_1,a_2,\dots,a_{2n}\) 变成 \(a_1,a_{n+1},a_2,a_{n+2},\dots,a_n,a_{2n}\),求最少切牌操作次数,使得扑克牌的顺序重新变为 \(1,2,\dots,2n\),多组数据

很好的数论题,使我的大脑旋转

弱化版 洛谷 P2755 洗牌问题,但这题单次询问就可达 \(n=10^{14}\) 规模,故不可直接暴力,考虑寻找规律优化复杂度

其实 \(1\)\(2n\) 既然都不会改变,故可以不考虑这两张牌

将剩下的 \(2n-2\) 张牌全部减 \(1\),发现每次操作都是 \(k \gets 2k \bmod (2n-1)\),那么不难发现需要求一个最小的 \(p\),使得 \(2^p \equiv 1 \pmod{(2n-1)}\) 即可,暴力时间复杂度为 \(\mathcal O(n)\)

根据欧拉定理,\(p\) 必然是 \(\phi(2n-1)\) 的因数,直接枚举因数暴力快速幂求出最小 \(p\) 即可,单次询问时间复杂度为 \(\mathcal O(\sqrt m + d(k) \log k)\),其中 \(m=2n-1,k=\phi(m),d(k)\) 表示 \(k\) 的约数个数

注意到 \(n\) 最大可达 \(10^{14}\),故快速幂里会爆 long long,请开 __int128,(我说我因为这里死活过不了样例你信吗)

B

AT_agc016_d XOR Replace

给你两个长度为 \(n\) 的序列 \(a\)\(b\),每次可以 \(a_i \gets \operatorname{xor} \lbrace a_1,a_2,\dots,a_n \rbrace\),其中 \(\operatorname{xor}\) 表示二进制下按位异或和,求将 \(a\) 序列变成 \(b\) 序列的最小步数

钦定序列初始异或和为 \(x\),每次相当于交换 \(a_i\)\(x\),显然地,判断无解只需判断 \(a \cup \lbrace x \rbrace \supseteq b\) 即可

考虑从 \(b_i\)\(a_i\) 连边,尝试从 \(x\) 出发遍历所有边

  • 若图是一个包含 \(x\) 的连通图,那么必然可以找到一条欧拉路径覆盖所有边

  • 如果图不连通或 \(x\) 是独立点,那么答案即为边数加上连通块数再减去 \(1\)(若 \(x\) 为独立点则不用减 \(1\)

考虑使用 STL 维护可重集,这里笔者使用了快排去重+并查集,时间复杂度为 \(\mathcal O(n \log n)\)

C

AT_arc108_f Paint Tree

给定一棵 \(n\) 个节点的树。你需要对每个节点黑白染色。

\(x\) 表示白色点之间的最大距离,\(y\) 表示黑色点之间的最大距离,那么定义一种染色的权值为 \(\max(x,y)\)。如果某种颜色没有出现那么对应的 \(x/y\) 就是 \(0\)

求所有 \(2^n\) 种染色方式的权值和。对 \(10^9+7\) 取模。

先求出一条直径,若直径的两个端点颜色相同,则最长距离一定为直径。否则,令两个端点分别为 \(x,y\),并钦定 \(x,y\) 不同色

枚举答案 \(d\),令 \(c_u\) 表示点 \(u\) 的颜色,\(\operatorname{dis} \lbrace u,v \rbrace\) 表示点 \(u\) 到点 \(v\) 的最短路径,\(\forall u \in G \land \operatorname{dis} \lbrace u,x \rbrace > d,c_u=c_y\),且 \(\forall v \in G \land \operatorname{dis} \lbrace v,y \rbrace > d,c_v=c_x\),若存在一点 \(z\) 满足 \(\operatorname{dis} \lbrace x,z \rbrace \leq d \land \operatorname{dis} \lbrace y,z \rbrace \leq d\),那么这个点的颜色不会对答案产生贡献

定义 \(cnt_i\) 表示到直径两端的距离不超过 \(i\) 的点数,那么对于枚举的 \(d\),所产生的染色贡献为 \(2^{cnt_d}-2^{cnt_{d-1}}\),总贡献为 \(\sum_{d=L}^{R} 2^{cnt_d}-2^{cnt_{d-1}}\),不难得到,下界 \(L=\max \lbrace \min \lbrace \operatorname{dis}_{0,i},\operatorname{dis}_{1,i} \rbrace \rbrace\),上界 \(R=\operatorname{dis}_{0,y}\)

注意到颜色可以互换,故贡献记得乘 \(2\)

考虑用 dfs 求解,\(cnt_d\) 可以考虑将其差分数组统计出来后前缀和求得即可,时间复杂度为 \(\mathcal O(n)\)

D

AT_arc152_f Attraction on Tree

你有一棵有 \(n\) 个点的树。一开始,树上的 \(1\) 号节点处有一个卡片。

你需要进行以下操作恰好 \(n\) 次:

  • 选择一个之前没有被选择过的点,将卡片向那个点移动一条边。不能选择恰好在卡片位置的点

称一个选择点的顺序是好的,当且仅当 \(n\) 次操作后卡片在 \(n\) 号节点。

你需要回答,一个好的顺序在过程中卡片最少访问了多少个节点。或者报告不存在好的顺序。

超级无敌吊炸天逆天神仙题,AT *3664

咕咕咕

Round 24 (11.12)

A

\(n\) 个怪物,击杀第 \(i\) 个怪物可以获得第 \(i\) 个法术,且将上一个法术强制顶替掉,用法术 \(i\) 击杀怪物 \(j\) 需要消耗时间 \(w_{i,j}\) 和法力 \(c_{i,j}\),特别地,\(w_{i,i}=c_{i,i}=0\),且击杀第一只怪物不需要花费任何时间和法力,给定法力上限 \(m\),求在不超过法力上限的情况下,最小化击杀所有怪物的时间,并输出击杀顺序,若无解输出 -1,多解输出字典序最小的击杀顺序

发现不能状压 dp,那么这只能是道神秘爆搜剪枝题

预处理出在分别不考虑时间和法力的情况下,从当前局面到最后需要的时间 / 法力,若当前劣与最优解则剪枝

时间复杂度 \(\mathcal O(n!)\),肯定跑不满

B

给定一棵 \(n\) 个点,以 \(1\) 为根的二叉树,多次修改,每次修改点 \(x\) 的点权,求有多少个结点 \(u\),满足以 \(u\) 为根的子树是一棵二叉搜索树 \(\dag\)

\(\dag\):一棵树是二叉搜索树当且仅当所有的点 \(x\) 满足以下条件:

  • 不存在左子树或左子树所有点的点权都 \(\leq x\) 的点权
  • 不存在右子树或右子树所有点的点权都 \(\geq x\) 的点权

不难发现,一棵子树是 bst(二叉搜索树)当且仅当子树的中序遍历序列的点权单调不降,而每个子树的中序遍历显然是整棵树的中序遍历上的一段连续区间

设中序遍历为 \(a_1,a_2,\dots,a_n\),子树 \(u\) 对应的区间为 \([l,r]\),若子树 \(u\) 为 bst,则 \(\forall i \in [l,r) \cap \mathbb Z,a_i \leq a_{i+1}\)

用树状数组维护区间不满足 \(a_i \leq a_{i+1}\) 的个数,发现每次修改只会影响这个点到根的路径,考虑树上倍增即可

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

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

相关文章

memtest86测试工具排查内存故障

该方法适用于服务器数量较多的场景,通过BMC挂载镜像文件逐个进行测试。 1、将memtest86-pro-usb.zip解压。2、打开BMC的Java控制台,在Virtual Media菜单中选择Virtual Storage3、在Virtual Storage对话框中,Logical Drive Type选择HD Image,然后选择本机的memtest86-pro-us…

Microsoft System Center 2025 Multilanguage - Windows 服务器管理软件

Microsoft System Center 2025 Multilanguage - Windows 服务器管理软件Microsoft System Center 2025 Multilanguage - Windows 服务器管理软件 Windows 服务器部署、配置、管理和监控软件 请访问原文链接:https://sysin.org/blog/microsoft-system-center-2025/ 查看最新版。…

dotnet 记龙芯麒麟教育版安全中心拦截文件 导致 docker 内 CI CD 构建失败

本文记录我在龙芯旧世界的麒麟教育版系统上,使用 docker 对 dotnet 进行构建和打包过程中,因为安全中心拦截而出现奇怪的问题以下是我打包构建过程中遇到的文件没权限或被占用或 Mutex 失败等信息 使用 GitLab Runner 拉取项目时,遇到的报错信息如下 Running with gitlab-ru…

dotnet 9 WPF 连字符渲染支持

连字符渲染功能是 WPF 呼声很高的一个功能,核心需求方是使用 Visual Studio 的开发者们。开发者们期望使用连字符的时候可以进行连字符渲染,让开发过程中的视觉效果更加。于是作为 Visual Studio 的基础设施的 WPF 就要承担此功能的实现。经过漫长的开发,终于在 dotnet 9 里…

读数据质量管理:数据可靠性与数据质量问题解决之道03数据目录

数据目录1. 同步数据 1.1. 不同的数据仓库和数据湖通过数据集成层来进行桥接 1.2. AWS Glue、Fivetran和Matillion等数据集成工具从不同来源收集数据,统一这些数据,并将其转换为上游来源 1.3. 数据集成的一个典型用例是收集数据湖的数据并以结构化格式将其加载到数据仓库中 1…

内视图和跨视图几何知识进行立体匹配

内视图和跨视图几何知识进行立体匹配几何知识已被证明对立体匹配任务有益。然而,之前将几何见解整合到立体匹配算法中的尝试,主要集中在单个图像的几何知识上,而忽略了遮挡和匹配唯一性等关键的交叉视图因素。为了解决这一差距,提出了一种新的内视图和跨视图几何知识学习网…

RHEL9.4上创建RockyLinux9.4虚拟机

日期:2024.11.13 计划:在LANbridge网段里安装RockyLinux9.4虚拟机,IP地址10.31.0.1,用于搭建dhcp服务器 参照:鸟哥Linux私房菜 马哥教育王晓春老师课程TOPO结构如图之前安装rhle8的时候写了自动化安装的脚本,现在只需要简单修改一下再执行,无需手动编辑xml文件,就可以创…

REHL8.1上配置路由的nftables防火墙策略

日期:2024.11.9 参照:鸟哥私房菜-第七章、Linux 防火牆設定 https://linux.vbird.org/linux_server/rocky9/0180firewall.php在RHEL8.1的安装过程中没有注册,目前yum源不能用,先注册 [root@RHEL8 ~]# dnf repoinfo Updating Subscription Management repositories. Unable …

数据采集第四次实验

作业1 仓库链接:https://gitee.com/jyppx000/crawl_project 作业① 要求:熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。1.1 代码和…

用python或使用Linux终端中的awk命令,处理文件并提取其中的IP地址(文末有代码,可直接使用)

题目:我有一个日志文件如图所示,我要取出文件中所有的IP地址,以方便我将其加入到防火墙的黑名单中 代码中所用到的正则表达式介绍: python使用的正则表达式是:对该正则表达式的解释:\b(?:\d{1,3}\.){3}\d{1,3}\b\b:单词边界。确保IP地址前后不与其他字符连接。 (?:\…

第七次高级语言程序设计作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13304 学号:102400110 姓名:阿卜杜拉阿布力克木 1没有问题 2难度有点大,网上搜了之后看了好久才看懂 3也是看了好久才看懂 45没…

从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019

从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019安装内容 数据库版本:SQL Server 2019 企业版 操作系统:CentOS 7.9 配置如下图:安装环境准备 本文演示的Linux发行版是CentOS 7.9。接下来是SQL Server 2019的部署细节,包括安装源的配置、安装SQL Serve…