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

XXII Open Cup : Grand Prix of Southeastern Europe

题量这么大还没签到题,差评了。

A. ABC Legacy

我们可以求出三种子序列各划分出了多少个,设为 \(x,y,z\),则 \(cnt_A=x+y\)\(cnt_B=x+z\)\(cnt_C=y+z\),不难求出 \(x,y,z\)。从 \(B\) 出发考虑,它要作为 \(BC\) 出现 \(z\) 次,作为 \(AB\) 出现 \(x\) 次。显然将前 \(z\)\(B\) 作为 \(BC\) 出现最优,此时 \(C\) 一定取某个 \(B\) 后面第一个没匹配的 \(C\),这样做完以后只需要 check 一遍 \(AC\) 是否合法。

B. New Queries On Segment Deluxe

考虑没有可持久化怎么做。注意到 \(k\) 很小,尝试对列建立线段树然后维护所有行的信息,需要维护区间最小值,修改操作需要加法标记和赋值标记,下传标记的时候区间最小值并不是很好更改。对于行的每个子集,维护其和的最小值,这样区间最小值信息是好修改的,同时注意到子集信息也是可以相互推出的。时间复杂度 \(O(q\log n2^k)\),最后加一个主席树即可。

C. Counting Phenomenal Arrays

一个直观感觉是,\(>1\) 的数不会很多,实际上确为如此。考虑对于所有 \(>1\) 的数求出 \(x=\prod-\sum\),那么需要添加 \(x\)\(1\) 使其合法。注意到数组里面的数是 \(O(n)\) 级别,更确切地可以分析到 \(\leq n\)\(ab-a-b\geq 2(n+1)-2-(n+1)\geq n-1\)。感受到不断加入 \(>1\) 的数后 \(\prod-\sum\) 增长速度非常快,于是后面直接搜即可。

D. LIS Counting

问题的结构非常复杂,用双射来简化问题,题目中 \(NM\) 的形式提示映射到矩阵。下文 \(i\) 均指下标,\(p_i\) 指值。

\(inc_i\) 代表以 \(i\) 结尾的 LIS 长度,\(dec_i\) 代表以 \(i\) 结尾的 LDS 长度,可以说明,在同一个序列中 \((inc_i,dec_i)\) 互不相同。设 \(i<j\),分析一下 \(p_i\)\(p_j\) 的大小关系即可。

建立两个矩阵,\(A_{inc_i,dec_i}=i\)\(B_{inc_i,dec_i}=p_i\)。考察矩阵的性质,可以发现 \(A\) 行列均递增,\(B\) 行减列增。同时对于一个合法的长为 \(nm\) 的序列,\(A\)\(B\) 一定均被填满,同时形成双射。\(p\to(A,B)\) 是单射很好说明,\((A,B)\to p\) 是单射需要说明任何 \((A,B)\) 均能生成合法的 \(p\),说明此点后恰好生成一个是显然的。对于一对 \((A,B)\) 生成一个序列 \(p\) 后,可以说明其必然合法。

对于 \(i:1\to nm\),依次将 \(A\) 中值为 \(i\) 的位置染色,可以发现任意时刻染色必然为包含右上角的,轮廓不存在凹陷的连通块。新加入 \(i\) 时,考虑其 \(inc_i\) 实际上是从先前连通块中找到值小于其且 \(inc\) 最大的位置,\(inc\) 最大表现为最靠下,从 \(B\) 出发考虑,新染色点的上方显然是一个合法的位置,同时不存在其它更靠下的合法位置,因为 \(B\) 是行减列增的。\(dec\) 的分析同理。

我们要求的 \(f(pos,val)\) 即为在 \(AB\) 同一个位置上分别为 \(pos\)\(val\) 的矩阵数量。对上面的染色过程 dp,维护轮廓线,可以统计出 \(g_0(i,j,pos)\) 代表 \(A_{i,j}=pos\) 的方案数,由于 \(AB\) 完全独立,各做一遍然后乘起来即可。对 \(B\) 的 dp 顺序需要从右上角开始。时间复杂度 \(O(\binom{n+m}nnm+(nm)^3)\)

E. Flood Fill

建图。注意到有边的两个连通块在最后的矩阵中不可能同时被改变颜色,同时选择原图的一个独立集,钦定这些连通块改变颜色是一定可以做到的,图是二分图,所以问题等价于二分图最大独立集,网络流即可。

F. to Pay Respects

考虑什么时候让对手中毒最优,如果存在一个让对手中毒的时刻 \(i\),同时对手存在一个回血的时刻 \(j\),且 \(j\) 上没有中毒,\(i>j\),那么将 \(i\) 上的中毒移到 \(j\) 一定更优,因为中毒本身就是越往前越优,唯一制约其的就是抵消回血这一效果。因此最后的中毒时间形如一段前缀加上若干回血的时间点,枚举最后一个中毒的时间即可。

G. Replace Sort

\(B\) 排序。考虑将 \(A\) 中的若干连续段替换成 \(B\) 的一个连续段,令 \(f_i\) 代表 \(i\) 处没有连续段的最小值,\(i-1\) 处没有连续段的情况可以直接转移。以下讨论 \(i-1\) 处有连续段的情况。

我们必然是将 \(A_{i-1}\) 替换成 \(B\) 中小于 \(A_i\) 的最大值,需要满足这个值 \(>A_{i-1}\)。显然这个值在此前不会被使用。同理,设连续段开头为 \(j+1\),将 \(A_{i-1}\) 替换为 \(B_x\),那么整个连续段就是将 \(A_{j+1\sim i-1}\) 替换为 \(B_{x-(i-j)+2\sim x}\),写出转移条件:

\[A_j<B_{x-(i-j)+2}\&\&j\geq i-x-1 \]

第一个条件主要体现在下标上,考虑将其转化。设 \(c_i\) 为最小的 \(j\) 使得 \(A_i<B_j\),若不存在则为 \(\infty\),那么条件改写为:

\[c_j\leq x-(i-j)+2\Longrightarrow c_j-j\leq x-i+2 \]

这是唯一的条件,因为原先的第二个条件被此蕴含。线段树直接优化即可,时间复杂度 \(O(n\log n)\)。存在常数更小的做法,注意到 \((c_j-j,f_j)\) 带来了很多支配对,删掉不需要的支配对以后可以发现剩下的决策点一定是最大的 \(c_j-j\) 带来,set 维护即可。

H. Werewolves

枚举颜色 \(i\),考虑组合意义。将 \(c_j=i\) 的点权设为 \(1\),否则设为 \(-1\),等价于查询树上权值 \(>0\) 的连通块数量,根据树上背包经典结论,做这个的复杂度是 \(O(nk)\),其中 \(k\) 是颜色 \(i\) 的出现次数,总复杂度 \(O(n^2)\)

I. Colourful Permutation Sorting

存在最优方案使得所有操作一在操作二之前。考虑最终序列的形态,如果一些数所处的颜色改变了,那么交换这些数是必然需要的,先将这些交换做完,此后的交换只会发生在同种颜色间,每种颜色是独立的,那一种颜色先做操作二在做操作一显然不优。同时每种颜色只会做一次操作二。

不存在操作二时的经典结论是答案为 \(n-cyc\)\(cyc\) 为置换环数量。枚举哪些颜色做操作二,每个颜色的所有点可以缩成一个大点,我们想最大化图上的环数,每条边只能位于一个环中。缩掉二度点,则剩下最多 \(k\) 个点,同时每个点入度等于出度。自环直接删去,二元环也直接删去。三元环不能直接删去的原因是,假设最终答案中三条边在不同的环上,那么将三条边放在同一个环中,剩下三个缺一条边的环可能只合成一个环,环数减小。

实际上,如果我们能按顺序删去自环、二元环、三元环、四元环、五元环,那么是对的。上面的分析需要三条边在最终答案中处于不同的环,这些环至少是三元环(二元环和自环已经被删去了),那么顶点数至少是 \(6\),由于最多 \(5\) 个点,所以必然有重复的顶点,可以多拆出一个简单环。四元环同理但复杂一点,四条边在不同环中的情况和上面一样,四条边在三个环中,顶点数至少为 \(12\),肯定可以多拆出一个简单环。

还有一些别的做法。当不超过 \(4\) 个点的时候,一定可以找到一个点满足出点只有一个,合并即可。五个点的时候可以构造出如下反例(题解说每个点的入点数和出点数都为 \(2\),下面这张图显然是不符合的,我也不知道是不是 typo):

image

但是一定有出点数为 \(2\) 的点,暴力枚举配对方式可以缩掉这个点。其实我也不知道这句话是什么意思,看不懂。

上述所有过程都要不断删去自环和二元环。

J. Jason ABC

K. Amazing Tree

L. Primes and XOR? Nonsense

M. Many LCS

N. Max Pair Matching

http://www.wxhsa.cn/company.asp?id=6495

相关文章:

  • GNSS终端授时方式
  • SpringAI接入DeepSeek大模型实现流式对话
  • 通知语音播报功能,解锁全新体验
  • 使用AI容器镜像部署Qwen大语言模型
  • 【IEEE冠名,香港中文大学(深圳)主办)第五届IEEE能源工程与电力系统国际学术会议(IEEE-EEPS 2025)
  • C#实现Access表格自增ID的重置
  • 运用深度学习模型实现图像的分类
  • 设备ONVIF接入平台EasyCVR私有化视频平台级联到海康平台目录丢失根因定位
  • java 通过模板输出word
  • 【设计模式】单例模式 - 实践
  • ubuntu服务器docker容器启动java项目
  • 【2025最新】企业信息模糊搜索API设计与实践指南
  • 一键搞定本土认证难题,AnalyticDB版Supabase助力AI应用实现支付宝微信登录
  • sumifs根据条件求和
  • ubuntu服务器docker安装部署ngix
  • c++右值引用和移动语义
  • 彩笔运维勇闯机器学习--梯度下降法
  • 作业03
  • 项目管理软件产业革命:从工具升级到生产力范式转移
  • vs code运行Java遇到的输入问题
  • 关于数据跨境,你应该了解的合规难题有哪些?
  • 国内开发者如何选择代码管理平台?三大主流工具深度对比
  • doubletrouble wp复盘
  • VAR算法
  • mysql 万能恢复主从Slave_SQL_Running 是No
  • 刚刚 Java 25 炸裂发布!让 Java 再次伟大
  • go 语言结构和基础语法
  • 详细介绍:Linux--初识网络
  • lua程序调试方法
  • 维保信息查询