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

CF1584E Game with Stones 题解

Sol

考虑一个区间 \([l,r]\) 要如何才能合法。

显然 \(l\) 只能和 \(l+1\) 消耗,所以 \(a_{l+1}\ge a_l\)

然后接着让 \(l+1\)\(l+2\) 消耗,所以 \(a_{l+2}\ge a_{l+1}-a_l\)

以此类推 \(a_{i}\ge a_{i-1}-a_{i-2}+a_{i-3}-\dots\)。移项得到 \(a_{i}+a_{i-2}+\dots- (a_{i - 1}+a_{i-3}+a_{i-5}+\dots)\ge 0\)

注意到这个式子在 \(i \gets i+ 1\) 后,原来的数 \(s\) 会变成 \(a_i-s\)

那么我们只需要维护每个以 \(i\) 为后缀的所有区间,然后删除和 \(<0\) 的区间并加上 \([i,i]\),然后查询和为 \(0\) 的区间数量,可以用 map 实现。

注意 \(r-l+1\) 为偶数时,\(s_{l,r}=s_r-s_{l-1}\),否则 \(s_{l,r}=s_r+s_{l-1}\),其中 \(s_{i}\) 表示以 \(i\) 结尾且 \(i\) 符号为正的区间交替和。

Code

Link。

http://www.hskmm.com/?act=detail&tid=21403

相关文章:

  • 高德解包和打包报错
  • Python 中的上下文管理器与 `with` 语句全解析
  • 用友U8Api 接口对接
  • 填坑:VC++ 采用OpenSSL 3.0接口方式生成RSA密钥 - 教程
  • JUC:AQS
  • CF1980F2 Field Division (hard version) 题解
  • JUC:ThreadLocal
  • 广义串并联图とP6790 [SNOI2020] 生成树
  • JUC: Java对象内存布局和对象头
  • Manim实现波浪形文字特效
  • JUC: synchronized与锁升级
  • lang / philipino / feilvbin / taglog / tajialu
  • Windows上安装2个不同版本的MySQL5.7和8.4
  • cron表达式,每月1号凌晨3点执行和每周4凌晨3点半执行
  • 2025.9.30
  • C#/.NET/.NET Core技术前沿周刊 | 第 56 期(2025年9.22-9.28)
  • 反转链表
  • 天津港口海鲜之旅全攻略(2025最新版)
  • tomcat创建bat启动,结合任务计划实现自动重启tomcat服务 - 详解
  • 实用指南:【论文精读】Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector
  • Chromium V8类型混淆漏洞CVE-2025-10585安全分析
  • Claude 4.5 刚刚发布,能连肝 30 多个小时,史上最卷 AI 诞生
  • 香橙派5pro驱动开发(一)
  • Python 脚本遇到 SSL 证书问题
  • sa-token开发时遇到的问题
  • HR如何摆脱入离职事务性内耗?组织管理系统助力聚焦人才价值挖掘
  • 基于SpringAI构建大模型应用
  • C# TCP - 串口转发 - 实践
  • 【研发规范】Git 提交(commit)、CodeReview规范
  • PCIE 各个管脚的作用是什么?