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

25.10.28联考题解

A

从两边贪心即可。

B

\(f_{i,j,0/1}\) 表示牌堆还剩 \(i\) 张牌,现在已经有 \(j\) 种有用的牌种,是否有对子的期望。转移考虑分讨新的牌是否有贡献,有什么贡献即可。

C

首先差分,现在一次操作就是一个位置加一个位置减相同的数。然后很明显答案有一个上界就是 \(n-1\),现在考虑如果能够凑出一个和为零的集合就能让答案减一。但是并不是所有的集合都是合法的,因为你只能加,所以你需要满足对于任意前缀和非负,于是就可以设计一个 dp,设 \(f_S\) 表示 \(S\) 中最大划分出来的合法集合数。然后枚举子集就是 \(\mathcal O(3^n)\),然后因为有很多状态没有用所以剪掉即可。输出方案就是在转移的时候记录从哪里来的即可。

D

首先有一个暴力 dp,设 \(f_i\) 表示最后一个选了 \(i\) 的最大价值,于是有转移 \(f_i=\max \{f_j\}+d_i\),然后对于 \(j\) 有三个限制分别是:\(t_i-R\le t_j\le t_i-L,c_j\le b_i,a_i-h\le a_j\le a_i+h\)。现在考虑优化转移。

注意到这个东西是三维的限制所以我们能够自然想到 cdq,但是普通的 cdq 每一维的限制只有一边,于是这道题我们需要用条状 cdq,考虑 cdq 的本质,我们对 \(t_i,t_j\) 建立一个坐标系,于是能够发现合法的转移范围是一个平行四边形。考虑用若干三角形切割四边形,于是每个点只会在一个三角形中计算贡献,我们同样可以 cdq,记录三角形的三个顶点然后正常转移即可,注意内层用线段树维护最大值。

http://www.jsqmd.com/news/24994/

相关文章:

  • 2025年河南工业大学2025新生周赛(1)
  • excel查找满足条件的第二项
  • 【传奇开心果系列】基于Flet框架实现的跷跷板动画自定义模板特色和实现原理深度解析 - 指南
  • CF506E Mr. Kitayutas Gift
  • 常用存储器介绍
  • 记录一次成功的springBoot
  • 2025.10.28总结
  • 代码大全2阅读笔记(1)
  • 进程与进程间通信(IPC)
  • QT:键盘事件(添加资源图片)
  • 2025.10.28
  • docker desktop:更新WSL2+安装nginx
  • # 学代码--看懂了但是不会写
  • 2025-10-28 aoao Round 比赛总结
  • P11307 [COTS 2016] 建造费 Pristojba 分析
  • 程序员如何打破职业瓶颈?先搬开这3块绊脚石。
  • 乱学点东西#2 :菠萝/蓝莓/Boruvka算法
  • 文件清理,推荐几款常用软件
  • AI时代的设计师:从工具到“超人”的进化之路
  • MyBatis 动态 SQL 实现原理 - Higurashi
  • bililun
  • 《程序员修炼之道:从小工到专家》观后感第二篇
  • 【学习笔记】数据结构全家桶
  • 社区
  • 「Gym 102759I」Query On A Tree 17
  • Mybatis使用简述
  • C++里的代码命名规范
  • 最小二乘问题详解6:梯度下降法
  • JavaWeb01
  • 现代C++编程初体验