模拟赛10.11 解题报告

T1 染色#

题意:给出 n,造 n1 的数 a1...n,满足对于任意 1i<jn,若 ji 为质数,那么 aiaj,最小化 max1in{ai}


我们通过爆搜发现对于 7n,答案始终为 4,方案为 1,2,3,4,1,2,3,4,1,...,不难发现这种方案是正确的,因为没有质数是 4 的倍数。

由于样例直接给出 n=7 的情况,因此我们只需要大力分类 n=1,2,3,4,5,6 的情况,n7 直接输出即可。


T2 序列#

题意:

1T5, 1n109, 1k,m2×105, 1D1018, 1ai5000


考场写了一个错解。

枚举 minbi,然后贪心分配剩下的。

但是会超时,感性认为这是一个单峰函数,考虑直接二分。

被卡 95pts,听说三分可以过 100pts,果然三分的容错率就是比二分高。

正解咕着。


T3 树上询问#

题意:一棵树,q 次询问。每次给出 u,v,求从 u 走到 v,有多少个点满足 点的编号 = 走到这个点的步数。


一眼 NOIP2016 TG 天天爱跑步

考虑拆成 ulca, lcav 两部分。

对于第一部分,需满足 dep[u]dep[x]=xdep[x]+x=dep[u]

对于第二部分,需满足 dep[u]+dep[x]2dep[lca]=xxdep[x]=dep[u]2dep[lca]

把询问标记放到 u,v,lca,fa(lca) 上,离线遍历一遍即可,时间复杂度为 O(n+q),可以选择性带 log

T4 莫队#

题意:一个序列 a1...n,支持两种操作:

  • 1 x y 修改 axy

  • 2 l r 查询 [l,r] 有多少个子区间满足数字两两不同。

1n,q2×105, 1ain


di 为上一个 =ai 的数的位置。

pi=maxji{dj},不难发现,当 i 作为右端点时,左端点可取 [pi+1,i],有 ipi 种方案。

对于每个询问 [l,r],我们可以找出一个分界点 x

  • 对于 1ix,满足 pi<l

  • 对于 x<ir,满足 pil

第一部分的贡献为 (l+x)(xl+1)2,只与 x 有关,容易处理。

第二部分的贡献为 i=x+1r(ipi)=(x+1+r)(rx)2i=x+1rpi,我们还需要求出 x+1...rp 的区间和。

现在有三个问题:

  • 动态修改,动态维护 di

  • 快速找出分界点 x

  • 快速查询 p 的区间和。

对于第一个问题,考虑在值域上搞,设 Si 表示 aj=ij 的集合。

修改 axy,我们需要在 Sax 中删除 x,然后在 Sy 中插入 x

删除 x,我们找出 Saxx 的后继 nxt,那么修改 dnxtdx

插入 x 后,找出 Syx 的前驱 pre 和后继 nxt,那么修改 dxprednxtx

可以用 set,支持查找前驱后继。

对于第二个问题,我们考虑对 d1...n 建立线段树,然后一段前缀 max 对于一个 pi,可以在线段树上二分处理。

对于第三个问题,我们不禁想到经典题——Luogu4198 楼房重建,这里使用兔队线段树维护前缀最大值之和即可。

时间复杂度 O(n+qlog2n)

出处:https://www.cnblogs.com/Sktn0089/p/17757279.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Lgx_Q  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示