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

AGC 040

C

这不是我们港城莞校赛的题吗。

令 C 填 A 或 B 中的任何一种并最小化最后剩下的数的个数。奇偶位反转,显然和原串双射所以不重不漏,删相邻不同转为删相邻相同,容易发现,只要两种数没有只剩一种就一定能操作,所以能操作的最大次数等于两张数中数量较少的数的个数。所以 C 只要能把两边补齐,就一定能删空,这是充要的,能补齐的条件是三角形不等式。

考虑计数,统计不合法的方案,枚举 A 和 B 中数量较多的元素的个数,显然应该在 \([\frac n 2+1,n]\) 中,剩下的位置怎么填都非法,于是直接乘上 \(2^k\) 即可。

D

考虑画出 alice 和 bob 移动过程的折线图,其中 \(x\) 轴是距离,\(y\) 轴是时间。假设我们已经确定了这个排列,那么 alice 可以追上 bob 当且仅当两条折线有交点。所以将 bob 的折线向下平移到一个最靠下的位置使两折线依然有交,设折线此时和 \(x\) 轴的交点为 \((p,0)\),那么答案就是 \(\frac p n\)

假设已经确定了 \(p\) 所在的木棍和这个木棍后面的木棍集合,那么我们考虑怎么摆放他们使得 \(p\) 最靠后。在追上前,我们应该多放 \(a_i<b_i\) 的木棍让 alice 快速前进,所以 \(a_i<b_i\) 的木棍总是应该放在 \(a_i\ge b_i\) 的木棍前面。由于不能继续往下平移,走完所有 \(a_i<b_i\) 的木棍后两人应该恰好相遇。

我们考虑一条路径 \(C\):它从 bob 的出发点出发,沿着 bob 的折线一直走,直到第一次相遇,接着沿着 alice 的路径一直走直到走完全程。容易发现 \(p\) 所在的木棍后的每一条木棍,走完它会让 \(C\)\(y\) 坐标抬升 \(\max(a_i,b_i)\),我们希望 \(C\) 抬升地尽量快使 \(p\) 的位置尽量靠后,于是我们总是会选 \(\max(a_i,b_i)\) 最大的若干木棍拼在 \(p\) 所在的木棍后面。

枚举 \(p\) 所在的木棍并预处理后缀和即可二分算出答案。

E

考虑把 \(a\) 划分成两个序列 \(p,q\),满足 \(\forall i,a_i=p_i+q_i\),钦定 \(p\) 只用第一种操作消成 \(0\)\(q\) 只用第二种操作消成 \(0\),那么我们要付出的代价是满足 \(p_i>p_{i+1}\) 的下降位置 \(i\) 的个数加上满足 \(q_j<q_{j+1}\) 的上升位置 \(j\) 的个数。

考虑进行 dp,设 \(f_{i,j}\) 表示已经对前 \(i\) 个位置决策了如何划分,其中 \(q_i=j\) 的最小代价。有转移

\[f_{i,j}=\min_{k=0}^{a_{i-1}}(f_{i-1,k}+[k<j]+[a_{i-1}-k>a_i-j]). \]

考虑对这个式子进行优化。有一个观察是 \(f_{i,j}\le f_{i,j+1}\),这是因为对于一个固定的 \(k\),更小的 \(j\) 两个条件都更难满足了。还有一个观察是 \(f_{i,a_i}\le f_{i,0}+2\),这是因为对于固定的 \(k\),不同的 \(j\) 产生的贡献至多差 \(2\)

于是我们可以维护每个 \(i\) 的三段等值区间,类似第一个观察,我们可以发现只会从每个等值区间的右端点转移,于是朴素二分出这三个区间的端点就可以做到 \(\mathrm O(n\log V)\)

考虑优化到线性。设 \(p_1\) 为最大的 \(f_{i,j}=f_{i,0}\)\(j\),设 \(p_2\) 为最大的 \(f_{i,j}=f_{i,0}+1\)\(j\),设 \(D=f_{i,0}\),进行一些分类讨论:

  • 如果 \(a_i\ge a_{i-1}\),那么 \(f_{i,j}\) 一定可以无代价地从 \(f_{i,j-1}\) 转移,于是 \(p_1\) 不变,\(p_2\) 只要不等于 \(a_{i-1}\) 就不变。否则考虑 \(f_{i,(a_{i-1},a_i]}\) 应如何取值,根据前面的观察,我们只需要考虑 \(f_{i-1,p_1}\) 的贡献,稍微推一下式子就可以知道 \(p_2\) 会变成 \(\max(a_i-a_{i-1}+p_1,p_2)\)
  • 否则 \(a_i<a_{i-1}\),容易发现 \(p_1\) 会变成 \(a_i-a_{i-1}+p_1\),同时 \(p_2\) 会变成 \(\max(p_1,a_i-a_{i-1}+p_2)\),这种情况下 \(p_1\) 可能为负数,我们需要让 \(D\leftarrow D+1\),并且更新一下指针。容易证明需要更新指针时 \(f\) 数组的等值连续段个数为 \(2\)

F

考虑先进行操作 1 再往操作序列里面插入操作 2。

我们不妨设棋子 A 的坐标始终小于棋子 B 的坐标,将移动过程看成平面上的若干个点 \((x,y)\),其中 \(x\le y\)。如果有一次操作使得原本 \(x<y\) 的局面变成了 \(x=y\) 的局面,那么我们一定无法分辨出使用了操作 1 还是操作 2,由于题目区分的不是操作序列而是移动点集,所以我们需要避免在这里算重。不妨钦定填入操作 1 的过程中,除了初始的点 \((0,0)\) 之外不存在 \(x=y\) 的点,这样不会对相对困难的插入操作 2 的过程带来过多限制。

不管你怎么执行操作 2,显然 B 的坐标是不会改变的。于是填入的操作 1 需要满足,恰好执行了 \(B\) 次增加棋子 B 的坐标的操作。不妨枚举 \(k\) 表示增加了 \(k\) 次 A 的坐标,那么我们要统计的,就是从 \((0,0)\) 开始,除了初始点以外不能碰到 \(y=x\) 这条直线,到达 \((k,B)\) 的游走方案数。这是经典反射容斥。

接着,我们考虑怎么插入操作 2。令 \(d_i\) 表示只考虑操作 1,做完第 \(i\) 步操作后,A 和 B 两点的距离。我们发现第 \(i\) 次操作 1 后面可以插入操作 2 当且仅当,不存在 \(j>i\) 满足 \(d_j<d_i\)。否则会产生无效操作。进一步地,我们发现存在 \(j>i\) 满足 \(d_j=d_i\) 的方案也需要被视为不合法,原因依然是无法区分操作 1 和操作 2。

我们惊奇地发现,由于最终的 \(d=B-k\),初始的 \(d=0\),且每次操作只会让 \(d\) 变动 \(\pm 1\),于是所有的后缀严格最小值个数恰为 \(B-k+1\) 个,但是并不是所有位置都能直接插 2,需要满足 \(d_i\le A-k\) 才可以,否则 A 的总移动量就大于 \(A\) 了,不合法。所以总共的合法插入位置个数是 \(A-k+1\) 个。在这些位置后面填入若干操作 2 的方案数是隔板。于是对于一个确定的 \(k\),可以 \(\mathrm O(1)\) 算出答案,枚举所有的 \(k\) 就可以线性求解。

http://www.gsyq.cn/news/1384368.html

相关文章:

  • LegacyUpdate PowerShell集成:通过COM对象自动化Windows更新管理
  • 自制低成本电感测量仪:基于ATmega328P与LC振荡原理
  • Unity战斗角色资源包深度解析:动画事件与状态机工程实践
  • 单片机毕业设计——基于STM32智能温室控制系统设计与实现 要怎么设计与实现呢(全程可免费指导)
  • 基于雷达与光敏传感器的低功耗智能窗防设备设计与实现
  • Win11Debloat深度解析:Windows系统优化与预装软件清理技术实现
  • 手把手教你用C语言http-parser库解析HTTP报文(附完整回调函数示例)
  • 自然语言处理的核心技术:这5个模型,NLP从业者必知
  • Spring Cloud Zuul RateLimit自定义扩展指南:实现自定义Key生成器与错误处理器
  • Dramatron终极指南:如何用AI快速创作专业剧本的3种简单方法
  • 13-2 IO流原理及流的分类
  • ESP32+DS3231+ILI9341构建工业级气象预报终端:低成本替代方案
  • APKToolGUI中的Baksmali/Smali工具链:Android逆向工程的终极指南
  • ImageSearch错误处理:常见问题排查与解决方案的完整清单
  • AI Agent从Demo到商用:揭秘10大工程思想,助你避开90%落地坑!
  • 深入解析WinFsp:如何构建用户态Windows文件系统的技术架构
  • 微信聊天记录取证与备份:从EnMicroMsg.db解密到完整导出实战指南
  • Pixelle-Video终极指南:如何用AI在3分钟内创作专业短视频
  • CowabungaLite安全使用指南:避免数据丢失的5个重要注意事项
  • B站缓存视频无损转换:m4s-converter让珍贵内容重获新生
  • 观察Taotoken用量看板实现精准项目成本核算
  • 新手教程使用 curl 命令直接测试 Taotoken 聊天接口
  • 2026年AI论文网站实测排行,哪款真正适合毕业定稿?
  • sngan_projection论文解读:ICLR2018两大GAN技术的完美结合
  • Hindsight API参考:REST接口完整文档
  • 独立开发者如何借助Taotoken低成本验证多个AI创意
  • 在openEuler 22.03上,用libvirt和virsh命令管理虚拟机,保姆级避坑指南
  • 终极指南:如何用Driver Store Explorer轻松管理Windows驱动程序
  • 基于ENS210与Arduino的高精度温湿度露点监测仪制作指南
  • Qri实战案例:构建企业级数据管道与版本管理解决方案的完整指南