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

【学习笔记】[ARC150F] Constant Sum Subsequence

第一眼看上去,这道题一点都不套路

第二眼看上去,大概是要考dpdpdp优化,那没事了,除非前面333道题都做完了否则直接做这道题肯定很亏

首先我们要定义一个好的状态。废话

fsf_{s}fs表示BBB序列的和为sss时,能达到的AAA序列的最大长度,也就是最紧的限制。

这一步定义非常自然,到这里都没有任何问题

不过直接暴力转移复杂度O(S2log⁡n)O(S^2\log n)O(S2logn),考场上好像只能得到20pts20pts20pts

似乎有根号乱搞的做法,但是这道题nnn,SSS比较大所以会被卡掉

这是逼着我们想正解啊

不管了,根号乱搞比较好想,而且确实也是考场上性价比最高的做法

cdq\text{cdq}cdq分治的想法挺阳间的,应该可以学一下

乱胡一下吧,不过考场上可能我也不会写 考虑计算区间[l,r][l,r][l,r]dpdpdp值,显然我们知道转移的这个数不会超过[l,r][l,r][l,r]这个区间的长度。

发挥bot\text{bot}bot的能力 我们有转移式fs=max⁡x≤snxt(fs−x,x)f_s=\max_{x\le s}\text{nxt}(f_{s-x},x)fs=maxxsnxt(fsx,x),并且fsf_sfs是单增的,因此∀i∈[mid+1,r],fi>fmid\forall i\in [mid+1,r],f_i>f_{mid}i[mid+1,r],fi>fmid。先枚举一个xxx,则我们只需要考虑可能对右区间有贡献的sss,即满足nxt(fs,x)=nxt(fmid,x)\text{nxt}(f_{s},x)=\text{nxt}(f_{mid},x)nxt(fs,x)=nxt(fmid,x)。不难猜想,这些sss 形成了一个区间,并且这个区间的左端点就是最小的iii满足fi≥front(fmid,x)f_i\ge \text{front}(f_{mid},x)fifront(fmid,x),于是对于这个区间,贡献是相同的,而对应的右半部分下标是连续的,因此用一个线段树维护即可。

复杂度两个log⁡\loglog应该可以通过吧?

代码先咕了

http://www.lryc.cn/news/20472.html

相关文章:

  • Node.js实现大文件断点续传—浅析
  • Spring Cloud Nacos源码讲解(九)- Nacos客户端本地缓存及故障转移
  • MySQL知识点小结
  • MySQL关于NULL值,常见的几个坑
  • OllyDbgqaqazazzAcxsaZ
  • Elasticsearch7.8.0版本进阶——自定义分析器
  • spring事务-创建代理对象
  • Linux 配置NFS与autofs自动挂载
  • 【编程入门】应用市场(Python版)
  • 异常信息记录入库
  • Spring Batch 高级篇-分区步骤
  • ES数据迁移_snapshot(不需要安装其他软件)
  • 【Vue3 第二十章】异步组件 代码分包 Suspense内置组件 顶层 await
  • 「媒体邀约」四川有哪些媒体,成都活动媒体邀约
  • @Autowired和@Resource的区别
  • Linux系列:glibc程序设计规范与内存管理思想
  • Redis 集群
  • EF 框架的简介、发展历史;ORM框架概念
  • 注解原理剖析与实战
  • 《STL源码剖析》理解之将类成员函数和for_each等算法结合
  • 如何构建应用标准化体系
  • 【RabbitMQ笔记03】消息队列RabbitMQ七种模式之WorkQueues工作队列模式
  • 认识html
  • 在外包公司熬了 3 年终于进了字节,竭尽全力....
  • 绝对让你明明白白,脚把脚带你盯着 I2C 时序图将 I2C 程序给扣出来(基于STM32的模拟I2C)
  • 2023年全国最新工会考试精选真题及答案5
  • 一文2000字手把手教你自动化测试Selenium+pytest+数据驱动
  • windows安装Ubuntu子系统以及图形化界面记录
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码
  • 为多态基类声明virtual析构函数