Live2D

Solution Set -「LOCAL」冲刺省选 Round XIV

Summary

  名副其实的 trash round,希望以后没有了。

  A 题算好,确实一个比较关键的简化状态的点没想到,所以只拿了暴力(不考虑 O(n4) 能操过更多分的情况,明明 O(n4)O(2n) 是一档的。)

  B 题签到,C 题倍增 + 分治 NTT 你开 106 我确实 😓,要不是 105 分多我甚至懒得写。

Solution

A Good

  给定 {an},{wn},每次可以在 {an} 中删去一个先升再降相邻差 1 的子串,删去长度为 l 的子串的收益为 wl。求经过任意次操作获得的最大收益。

  n400


  联系 n 的范围猜测是区间 DP,所以先莽一个 f(l,r):把 al..r 删干净的最大收益(求出 f 之后可以再 DP 一下求答案)。注意“子串”成为“子序列”,能够划分子问题,所以自然想到转移时去讨论 al 被怎样的操作删除。

  这一点比较巧妙,也算是一个“删子串”转移的 trick:如果删除 al 时没有一起删除 ar,那么 al..r 本身就能分成两段独立转移,所以我们只需要考虑 alar 一起被删掉的操作。

  接下来就简单了。定义 g(l,r) 表示从 al 出发升序删子序列删到 ar 所划分出的子问题 f 的最大和;h(l,r) 则为降序删子序列。那么

f(l,r)=maxi[l,r){f(l,i)+f(i+1,r)}+maxi[l,r]{g(l,i)+h(i,r)+w2aialar+1},g(l,r)=maxi[l,r),ai+1=ar{g(l,i)+f(i+1,r1)},h(l,r)=maxi(l,r],ai+1=al{f(l+1,i1)+h(i,r)}.

O(n3) 转移即可。

B Color

  给定含有 n 个点 m 条边的连通无向图,结点 u 有颜色 cu。每次修改一个结点的颜色,修改后求出异色结点间的最短路。

  n2×105m3×105,边权非负。


  显然最短路一定是一条边;显然只有 MST 上的边有用;显然可以 O(qlogn) 在树上做。

C Music

  给定 {vn},求序列 S={sn} 的个数,使得 1sivi,且 S 没有 border。

  n106vivi+1


  注意 vivi+1 这个限制告诉我们,对于 S 的任意一个 |S|/2 以内的前缀,我们可以让它成为 border。所以不难设计出基于此的暴力 DP,令 f(i) 表示仅考虑 s1..i 的答案,pi=j=1ivj,那么

f(i)=pij=1i/2f(j)pjpij.

  发现这是一个很像卷积的东西,但是它要求 p(x)q(x) 时,p 取出的 x 指数不小于 q 取出的 x 指数。从分治乘法的角度考虑,显然所有左端点不为 1 的区间无法内部转移,所以分治实质上是一个倍增。随便写写画画可以设计这样一个倍增方法:

我们想要求 f 的灰色部分;红线是当前的中点,橙线是右半部分的中点。黄色连线可以直接卷,蓝色连线递归处理做上文提及的特殊卷积。特殊卷积的复杂度 T(n)=O(nlogn)+2T(n/2)=O(nlog2n),总复杂度 F(n)=T(n)+F(n/2)=O(nlog2n)。这个 106 带俩 log 跑多项式?我的笔记本也是超神只用 0.7s 跑大样例,总之这就是正解,我也想问候出题人。

posted @   Rainybunny  阅读(119)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示