当前位置: 首页 > news >正文

CF2006C Eri and Expanded Sets

题解区怎么都要数据结构??这篇题解主要讲解本题的一个维护技巧。

假如我们知道了这个问题的结论,现在我们关心的是怎么求关于 \(\gcd\) 带来的贡献。

考虑从左往右扫描右端点,我们来试着维护每个左端点的信息。我们固定 \(r\),并设 \([l,r]\) 区间的 \(\gcd\)\(g(l)\),不难发现 \(g(l)|g(l+1)\),并且一个经典结论是一个 \(\gcd\) 的结果顶多只会被修改 \(\log\) 次。

于是 \(|a_r-a_{r-1}|\) 修改的 \(g(l)\) 是一段后缀,我们直接暴力修改即可,直到没有发生改变为止。修改时维护 \(l\) 是否为好的区间,当前以 \(r\) 为右端点的好的区间数量是容易维护的,代码很短,时间复杂度 \(\mathcal{O}(n\log^2V)\),常数巨小。

代码:

int n, a[N];
bool ok[N];
int val[N];
void solve () {n = rd ();rep (i, 1, n) a[i] = rd ();int cnt (0), ans (0);rep (i, 1, n) val[i] = ok[i] = 0;rep (i, 1, n) {++ ans;int j (i);while (j > 1) {int las = val[j];val[j] = __gcd (val[j], abs (a[i] - a[i - 1]));if (val[j] == (val[j] & -val[j])) {if (! ok[j]) ++ cnt, ok[j] = 1;} else if (ok[j]) -- cnt, ok[j] = 0;if (val[j] == las) break;-- j;}ans += cnt;}
printf ("%lld\n", ans);
}
http://www.jsqmd.com/news/125298/

相关文章:

  • Audiveris终极指南:免费开源乐谱识别工具快速上手
  • AEUX插件深度解析:打通设计到动效的最后一公里
  • 鸿蒙开发实战:从0到1打造全场景高体验应用,这些技巧直接抄作业!
  • 革命性APA第7版参考文献生成器:3分钟智能化排版解决方案
  • Nintendo Switch全能文件管家:NSC_BUILDER从入门到精通
  • 快速理解JLink接口定义:常见术语解读
  • vivado安装包从零开始:完整指南助你顺利配置环境
  • Switch系统配置实战手册:从入门到精通
  • FreeMove工具深度解析:三步实现程序目录智能迁移
  • 校园热水自由:蓝牙水控器开源方案完全指南
  • 攻克Ryzen平台调试瓶颈:SMUDebugTool实战指南
  • 树上差分
  • 2025二手房翻新避坑指南:这几家靠谱公司让老房焕新不踩雷 - 品牌测评鉴赏家
  • Wallpaper Engine资源管理终极指南:RePKG工具让PKG解包和TEX转换变得轻而易举
  • 无需抠图!Qwen-Image-Layered 一键分解图像图层,支持图层级精准编辑
  • 小白必看!第一次装修选对公司少踩坑,4家省心装修品牌推荐 - 品牌测评鉴赏家
  • 手把手教你用Sunshine把旧电脑变成游戏串流神器
  • 终极指南:碧蓝航线自动脚本Excel数据导出完整教程
  • 告别旧房烦恼!靠谱二手房翻新公司大揭秘 - 品牌测评鉴赏家
  • 如何快速解决BlenderKit上传错误:专业调试指南
  • Switch大气层系统配置指南:新手零基础到精通全流程
  • P14480 化作彗星
  • 如何3步完成空洞骑士模组安装:Scarab管理器完整指南
  • DoubleQoL模组完全指南:如何快速提升你的工业帝国管理效率
  • 戴尔服务器风扇控制神器:告别机房噪音的智能解决方案
  • 3分钟掌握鸣潮工具箱:5个隐藏功能让你的游戏体验大升级
  • AUTOSAR架构图中服务层配置操作指南
  • 【计算机毕业设计案例】基于springboot的IT技术交流和分享平台基于springboot的社区技术交流平台的设计与实现(程序+文档+讲解+定制)
  • Audiveris终极指南:5步掌握免费乐谱数字化神器
  • Unity游戏翻译终极解决方案:XUnity.AutoTranslator完整指南