25.11.4联考题解

news/2025/11/4 20:54:23/文章来源:https://www.cnblogs.com/Lyrella/p/19191386

CF1905F

首先判断特殊情况:\(\forall i,p_i=i\) 答案一定是 \(n-2\)。然后考虑一个位置如果已经满足条件我们先统计到答案中,对于不满足条件的位置,考虑去进行交换的贡献。如果存在一个位置满足 \(p_i=i\) 并且前面只有一个数 \(x>i\) 那么我们换掉这个数就可以让答案 +1,如果 \(p_i\neq i\),那么我们就看把 \(p_i\) 放回原位能否让答案 +1。这样的交换种类是 \(\mathcal O(n)\) 的,可以提前预处理一些简单的数组辅助更新答案。

CF1891E

一眼题,考虑贪心。如果要改变一个数那么一定是变成 0 最优。我们考虑一定是去改变相邻互质的数,现在需要决策的是改变顺序与改变谁。考虑如果存在 \(i\) 满足 \(a_{i-1}\perp a_i,a_i\perp a_{i+1},a_{i-1}\neq1,a_i\neq1,a_{i+1}\neq1\) 那么我们操作 \(i\) 后就会消掉 2 的代价,于是考虑先去干掉这类位置。对于剩下的如果是 \(x\perp y,x\neq1,y\neq1\) 那么每次我们只能干掉 1 的代价。但是注意到如果有形如 \(11\) 的东西我修改一次貌似是不行的,必须要两次才能干掉 1 个,但是如果是 1 的连续段,假设段长为 \(\text{len}\) 并且左右都有数字那么实际只需要 \(\text{len}\) 次就能干掉 \(\text{len}+1\),于是这种东西也能多省一次操作,我们考虑将合法的 1 的连续段按段长排序处理,剩下来的操作就留给普通的修改即可。

子序列 Subsequences

首先我们可以思考给定一个串如何求本质不同子序列数,这个是子序列自动机,也可以直接 dp 解决。设字符集大小为 \(\sum\),考虑设 \(f_{i},i\in[1,\sum]\) 表示以第 \(i\) 个字符结尾的子序列数量,转移显然。发现如果串长限制在 1000 的时候其最多包含的本质不同子序列远大于给定的 \(n\) 于是题目一定有解。更极端的,我们考虑压缩字符集大小,只考虑字符集为 \(\{0,1\}\) 的情况。可以发现在此限制下本质不同子序列的数量是类似斐波那契数列一样增长的,所以我们可以只通过两个字符构造出合法的串。

现在考虑新的限制下的 dp,设 \(f_0\) 表示以 \(0\) 结尾的本质不同子序列数量,\(f_1\) 类似定义即可。转移很简单,就是 \(f_0\leftarrow f_0+f_1+1,f_1\leftarrow f_1+f_0+1\)。最后答案就是 \(f_0+f_1\)。为了让形式好看,我们令 \(f_0=f_0+1,f_1=f_1+1\),然后我们就有了新的式子:\(f_0=f_0+f_1,f_1=f_0+f_1,\text{ans}=f_0+f_1-2\)

现在已知的是最后 \(\text{ans}\) 的值,我们只需要知道 \(f_0,f_1\) 是怎么推过来的就可以倒推构造出合法的串了,但是现在问题就在如何确定 \(f_0,f_1\)。对于一组合法的 \(f_0,f_1\) 我们只知道需要满足 \(f_0+f_1=\text{ans}\),除此外啥都不知。换句话来说,题目对于 \(f_0,f_1\) 的限制异常宽松,所以可以考虑随机化直到找到合法的串为止,对于一组随机到的 \(f_0,f_1\) 我们需要满足他们辗转相减的次数 \(\le1000\),并且最后的值均为 1 即可。判断是否合法只需要用辗转相除法判断次数即可,单次复杂度是 \(\mathcal O(\log k)\) 的。

狭义线段树

看到这个题最初的想法一定是考虑把贡献全部扔到叶子上,于是对于二三操作就可以直接线段树,但是一操作貌似是不能直接做的,它是一个子树加和若干单点加的形式,考虑如何将其贡献到叶子。假设对于一个点 \(x\) 我们需要进行子树加 \(y\),考虑其影响的是它子树中的所有叶子。设 \(x\) 深度为 \(\text{dep}_x\),对于一个叶子节点 \(u_i\) 的深度为 \(d\),那么 \(x\) 对于 \(u_i\) 的贡献就是 \((d-\text{dep}_x+1)\times y\),因为从叶子到子树根的链上每个点都要做贡献。我们可以借助原来线段树的形态,在当前点打标记处理。我们考虑拆开上述贡献,变成 \(d\times y+(1-\text{dep}_x)\times y\),那么我们可以用两个标记分别维护两类贡献然后合起来即可。对于子树的单点加我们就直接在 \(x\) 打一个加法标记即可。

于是这道题的本质就是一个线段树加法的板子然后维护了两种标记,修改操作我们可以按照上述方式操作,找修改区间的时候考虑借助线段树原来的形态,假设我们递归到当前点 \(x\),如果还要递归,考虑左子树的最大节点编号与修改区间的大小关系即可。因为修改的编号是连续的,那么对应在线段树上的区间也会是连续的。查询就正常查即可。时间复杂度是 \(\mathcal O(n\log n)\) 的。

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

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

相关文章

d11.4t4 answer

d11.4t4 answer 题目 题目描述 小 ∗ 有一条地铁线路。 有 \(n\) 个嘟嘟要乘坐地铁。第 \(i\) 个嘟嘟会在第 \(l_i\)站上车,第 \(r_i\) 站下车。为了方便,我们假定有 \(2n\) 个地铁站,且 \(l_i\) , \(r_i\) 互不相…

详细介绍:当AI化身数据炼金术士:初级Python开发者如何将创意炼成黄金代码?—— 老码农的炼金术指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【学习笔记】kafka权威指南——第3章 kafka生产者—向kafka写入资料

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P15.神经网路的基本骨架——nn.Module的使用

P15.神经网路的基本骨架——nn.Module的使用打开PyTorch官网 1.找到troch.nn的Containers2.打开pycharm:代码-生成-重写方法-选择第一个要初始化的方法__init__3.pycharm运行代码如下点击查看代码 import torch from …

AGC052做题记录

A 其实是简单题,但我是唐诗。 \(2n\) 很简单,前 \(n\) 个和后 \(n\) 个全选 \(0/1\) 即可。可以感觉到正解只需要在这基础上改进,但是胡思乱想了很多没有任何进展。最后意识到最后凑个 \(0\) 即可。 B 做完 T1 ,就…

软工团队第一次作业

作业所属课程 软件工程作业要求 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13573作业目标 根据真实的需求调研结果,确定具有创新性与实用价值的软件开发项目选题,确保能将智能体合理地…

Windows11-GPT

Windows11-GPT导航 (返回顶部)1. 基于UEFI/GPT的硬盘分区 2. 分区要求2.1 启动分区(ESP) 2.2 微软保留分区(MSR) 2.3 Windows分区(OS) 2.4 恢复工具分区(WinRE) 2.5 数据分区(Other)3. 默认分区布局表 4. 其他实用分区…

1. markdown转word 第一步: markdown转html

1. 简介 最近因为项目需求需要将AI输出的结果导出到word中, 但AI输出的格式为markdown格式,因为word展示内容的时候需要有相应的格式(标题, 段落, 列表, 表格等), 所以不能直接将markdown输出到word中, 否则word中展示…

P14.Dataloader的使用

P14.Dataloader的使用14.1Pytorch官网打开torch.utils.data.DataLoader14.2在pycharm使用DataLoader它返回img和target代码如下:点击查看代码 import torchvision from torch.utils.data import DataLoader #from tor…

docker换源

创建/编辑 /etc/docker/daemon.json {"registry-mirrors": ["https://docker.1ms.run","https://docker-0.unsee.tech","https://docker.m.daocloud.io"],"live-restore…

pypinyin很好用

pypinyin很好用〔https://gitee.com/mirrors/python-pinyin#id4〕 〔https://github.com/mozillazg/pypinyin-dict〕 pip install就噌噌地装上了。 到灵格斯词典网站下载了成语、文化等词典,过几天出个1~2万词的用户…

小九源码-springboot078-java物业管理架构

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

VS 2017 项目文件不完整,缺少预期导入

VS 2017 项目文件不完整,缺少预期导入输入: dotnet --info缺少 .NET Core 2.0 运行时支持。安装:dotnet-runtime-2.0.0-win-x64.exe本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/v…

人性的弱点

抱怨、吵闹,和歇斯底里,所付出的代价。 那种喋喋不休的吵闹,是否对她有了某种帮助?还是把事情弄得更糟? 当你在深夜面对自己时,如果感受到的是充盈而非荒芜,那么这种生存方式就已通过生命的终极考核。

P13.torchvision中的数据集使用

P13.torchvision中的数据集使用13.1Transforms中的类 1.打开pytorch官网 2.找到CIFAR10,这个数据集比较小3.点击图片上红色的CIFAR104.这里的链接就是Pycharm下载到dataset里面的东西13.2CIFAR10数据集的下载与导入 1…

机器学习基础入门(第四篇):无监督学习与聚类途径

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

图上状压 DP

容易发现每年都在考这玩意。每年都不会。 AT_abc213_g [ABC213G] Connectivity 2 显然删边可以变成保留边。 定义状态函数 \(f_s\) 表示保留边,使得 \(s\) 中的点联通的方案数。那么对于 \(k=k0\) 来说,答案应该就是…

k8s删除Terminating状态的命名空间

k8s删除Terminating状态的命名空间原创于 2021-04-07 16:14:02 发布 CC 4.0 BY-SA版权 K8S/Kubernetes文章已被社区收录加入社区 K8S专栏收录该内容5 篇文章订阅专栏在部署Kubesphere时遇到命名空间kubesphere-system处…

【实用脚本】一键安装Oracle19c数据库

【实用脚本】一键安装Oracle19c数据库完整脚本: #!/bin/bash #Oracle 一键安装工具 log_file="/var/log/oracle_install_$(date +%Y%m%d_%H%M%S).log" # 屏幕输出只显示状态提示,日志文件记录完整详细信息…

程序员必逛的9个开发者社区推荐

程序员必逛的9个开发者社区推荐大家好,我是jobleap.cn的小九。 在技术飞速迭代的今天,开发者想要保持竞争力,离不开优质社区的滋养。无论是解决突发Bug、学习前沿技术,还是交流实战经验、寻找合作机会,合适的社区…