扩大
缩小

牛客小白月赛108 题解(出题人题解)

比赛链接

A

  • y=0 的情况,答案是 0
  • y>0 的情况,我们把每两次按钮先捆绑在一起,算出 k=yx+1
    • 然后判断是否可以在前 2k1 次就完成任务,即判断 (k1)(x+1)+1y
    • 如果上式成立,答案是 2k1,否则是 2k

B

提供一个比较暴力的做法。对于至少有两位的数字,它是 4 的倍数,等价于最后两位组成的数是 4 的倍数。

记录出现的所有数位(以及次数),然后枚举 1i,j9

  • 如果 ij,那么可以输出 YES 的条件是 10i+j4 的倍数,且数位 i,j 都有在原数出现。
  • 如果 i=j,那么可以输出 YES 的条件是 10i+j4 的倍数,且数位 i 在原数出现至少两次。

注意特判一位数的情况。

C

由第一个式子:异或和不是 0,那么它一定大于 0

将这个不等式代入第二个式子,那么必有:lcm(c1,c2,...,cm)<2×min(c1,c2,...,cm)

而最小公倍数一定是序列每个数(包括最小数)的倍数,因此 lcm(c1,c2,...,cm)=min(c1,c2,...,cm)

所以,要求 c1,c2,...,cm 每个数相等。

然后别忘了异或和不是 0,结合上一行的结论可知我们只能选奇数个相等的数。

所以如果某个数在序列出现奇数次可以一次删空;如果出现偶数次就需要删除两次(偶数 = 1+奇数)。

D

为了让 MEX 尽量大,我们应该让所有不为 0ti 值都不一样。

同时我们想要所有数的和尽量小,根据贪心策略,对于越大的 ti ,对应的 i 应该越小。

例如,我们想要让 MEX 等于 4,构造的总和最小的序列是 1,1,1,2,2,3,这样 t1=3,t2=2,t3=1

因此,当 MEX 等于 k+1 时,M 的下限应该是 vk= i=1ki(ki+1)=k2(k+1)2k(k+1)(2k+1)6+k(k+1)2

化简后是 vk=k3+3k2+2k6

对于每个询问,可以二分出最大的一个不超过 Mvk,输出 k+1 即可。注意二分过程不要溢出了。

P.S. 由于这个数这是 O(k3) 级别的,也可以暴力求出所有在 1018 以内的 vk

E

对于一个节点 x,它的颜色会波及到 1x 的链上所有点的贡献。

假设 p 初始的子树内红点有 rp 个,蓝点有 bp 个。假设节点 xp 节点的子树内。

  • x 由红变蓝,且 rpbp2,那么 D(p) 会减少 2
  • x 由红变蓝,且 rpbp0,那么 D(p) 会增加 2
  • x 由蓝变红,不等式左边改成 bprp 即可判断。

因此我们 DFS 两次。

  • 第一次统计每个节点所在子树的红蓝点个数。
  • 第二次对于每个 x,树上前缀和求出 1x 的链上每个点 p 中,满足 rpbp2rpbp0bprp2bprp0 的点数。根据节点 x 颜色的变化情况得到 D(p) 的变化量,再根据变化量的正负统计答案数。

 

F

利用若干个 vector 分别记录每个值的出现位置集合。我们先把原序列每个数取出,然后按照数值**从大到小**的顺序把数字放回。

放回的过程中,假设当前考虑等于 k 的数(先不放回),那么所有满足 ai=aj=k 的区间 [i,j],里面放回的数都大于 k

所以每个区间的贡献,等于放回区间内的数的个数。求完贡献后把所有等于 k 的数放回。

以上操作可以用树状数组快速维护、查询。

区间数太多了怎么办?d(i,j) 怎么乘上去?我们可以只先关注**极小有效区间**,即满足 ai=aj 但中间不存在等于 ai 的数的区间 [i,j]

区间长度为奇数,等价于左右端点的奇偶性相同;区间长度为偶数,等价于端点的奇偶性相反。

所以对于极小区间 [i,j],假设四个量,这都可以用线性复杂度求出:

  • [1,i] 中等于 ai 且下标是奇数的元素个数 x; 
  • [j,n] 中等于 ai 且下标是奇数的元素个数 y; 
  • [1,i] 中等于 ai 且下标是偶数的元素个数 z; 
  • [j,n] 中等于 ai 且下标是偶数的元素个数 w。 

那么区间 [i,j] 对整个序列的贡献是 c(i,j)×(xy+zw+2zy+2xw)

这个贡献可以代表所有包含 [i,j] 且端点等于 ai 的区间,在 [i,j] 这一段产生的贡献和。

容易证明极小有效区间数是 O(n) 的,所以总时间复杂度是 O(nlogn)

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