0%

2021年8月模拟赛简要题解·下

人世几回伤往事,山形依旧枕寒流。

2021.08.17

A.魔力

魔力

cnticnt_i 为字符 ii 出现的次数,那么题目求的就是所有 cnticnt_i 均相等的区间个数

因为 cnticnt_i 不固定,所以做个差分可以发现当且仅当差分为 00 的时候合法

那么从 11 开始拓展记录 cntcnt 差分,如果出现了两个地方的 cntcnt 差分数组相同,那么这两个 cntcnt 差分数组相减就是全 00

记录一个 vector 的 map 即可

code

B.粒子

粒子

就是一大堆一次函数求第一次交点

二分时间即可

code

C.六

状压

发现只压某个质因子出现的次数是不行的

因为 (2,3)(2,3) (6)(6) 质因子出现次数相同,但是可以转移的状态不同

还需要记录一个每一对质因子能否同时出现在一个数里的状态

这里只需要二进制 cnt(cnt1)2\dfrac{cnt(cnt-1)}{2} 位,质因子是三进制状压

记录一个 pair 去转移即可

考的时候没想到再去记录一个二进制位

code

D.多重集合问题

多重集合问题

经典题目,整体二分

code

2021.08.18

A.引子

引子

大模拟,注意数字可以是多位数

code

B.可爱精灵宝贝

可爱精灵宝贝

记录 dpl,r,t,0/1dp_{l,r,t,0/1} 表示拿完 [l,r][l,r] 的物品后时间为 tt 且在 左/右 端点上的最大价值

分类讨论转移

code

C.相互再归的鹅妈妈

相互再归的鹅妈妈

钦定有些人能选同一个然后斯特林反演

不会写

D.盟誓的文艺复兴

盟誓的文艺复兴

首先注意到只有 c=2,3c=2,3 是有意义的,别的都可以拆成 c=2.3c=2.3 的情况

c=2c=2 的情况就是

i=1n3μ2(i)(nii)\sum\limits_{i=1}^{\sqrt[3]{n}} \mu^2(i)(\sqrt{\dfrac{n}{i}}-i)

即枚举无完全平方因子的数,然后乘上能选的数字 (a<ba<b)

c=3c=3 比较复杂

先把 c=2c=2 统计过的排除掉

kk 是满足 k2abk^2 | ab 最大数字

那么 ab3=(abk2)(bk)2ab^3 = (\dfrac{ab}{k^2})(bk)^2

考虑如果之前没被统计过需要满足 abk2>bkak3\dfrac{ab}{k^2}>bk \Rightarrow a \ge k^3

定义 μ3(x):=[∄d3x,d1]\mu_3(x) := [\not\exist d^3|x,d\neq 1]

即没有完全三次方因子

式子是

a=1n4μ3(i)k3ab=a+1na3[k2ab]μ2(abk2)\huge\sum\limits_{a=1}^{\sqrt[4]{n}}\mu_3(i)\sum\limits_{k^3\le a}\sum\limits_{b=a+1}^{\sqrt[3]{\frac{n}{a}}}[k^2|ab]\mu^2(\dfrac{ab}{k^2})

然后设 g=gcd(a,k2),a=ag,k=k2g,b=bkg=\gcd(a,k^2),a'=\dfrac{a}{g},k'=\dfrac{k^2}{g},b'=\dfrac{b}{k'} (神奇代换,不懂原理)

a=1n4μ3(i)k3ab=ak+1na3kμ2(ab)\huge\sum\limits_{a=1}^{\sqrt[4]{n}}\mu_3(i)\sum\limits_{k^3\le a}\sum\limits_{b'=\frac{a}{k'}+1}^{\frac{\sqrt[3]{\frac{n}{a}}}{k'}}\mu^2(a'b')

μ(ab)=μ(a)μ(b)[gcd(a,b)=1]\mu(ab)= \mu(a)\mu(b)[\gcd(a,b)=1]

所以

a=1n4μ3(i)k3aμ2(a)b=ak+1na3kμ2(b)[gcd(a,b)=1]\huge\sum\limits_{a=1}^{\sqrt[4]{n}}\mu_3(i)\sum\limits_{k^3\le a}\mu^2(a')\sum\limits_{b'=\frac{a}{k'}+1}^{\frac{\sqrt[3]{\frac{n}{a}}}{k'}}\mu^2(b')[\gcd(a',b')=1]

反演掉 [gcd(a,b)=1][\gcd(a,b)=1]

a=1n4μ3(i)k3aμ2(a)daμ(d)b=ak+1na3k[db]μ2(b)\huge\sum\limits_{a=1}^{\sqrt[4]{n}}\mu_3(i)\sum\limits_{k^3\le a}\mu^2(a')\sum\limits_{d|a'}\mu(d)\sum\limits_{b'=\frac{a}{k'}+1}^{\frac{\sqrt[3]{\frac{n}{a}}}{k'}}[d|b']\mu^2(b')

枚举的其实都挺小的,可以大力预处理

code

2021.08.19

A.没有硝烟的战争

没有硝烟的战争

类似 SG 的方法,记录 dpi,jdp_{i,j} 表示第 ii 个动物报了 jj 能不能赢

如果它的下一个是同种族并且 [j+1,j+k][j+1,j+k] 中有一个必胜他就必胜

否则必败,下一个是不同种族且 [j+1,j+k][j+1,j+k] 中有一个必胜他就必败,否则必胜

大力转移 O((n+m)m)O((n+m)m)

code

B.秘密通道

秘密通道

能连的边全连上跑最短路

具体来说是把一个位置上下左右的四个墙按到最近的墙的距离连上

code

C.城市猎人

城市猎人

每天会把 mi+1m-i+1 的倍数的城市全都连起来,类似克鲁斯卡尔重构树,记录连接的过成为一个树,找 LCA 即可

code

D.无限远点的牵牛星

题解

2021.08.20

A.路径计数

路径计数

四点四边的无向图欧拉回路技术

不太可做

考虑给无向边定向,实际上定了一个向因为要有欧拉回路所以剩下的也都出来了

枚举第一条边多少个边定正向,跑 BEST 定理

code

B.BRT

BRT

记忆化可以水过去

没有梦想,没敢写

code

C.xor

xor

Friends

code

D.核糖

核糖

同 [旅行规划]

就是区间加等差数列,区间查最大值

分块,块内维护凸包即可

(然而暴力可过

核糖

2021.08.21

A.赛

wqs二分

贪心的考虑先选两个人都喜欢的,然后选各自喜欢的,最后选不喜欢的补齐

需要查询前 kk 小,可以用可删堆做,或者干脆排完序拿指针模拟

挺难写的

code

B.Merchant

Merchant

一堆一次函数,求前 mm 大总和超过 SS 的最小时间

虽然前 mm 大不随时间单调,但是一定呈现一个先降后升或上升的形式,所以特判 00 是否有解即可

code

C.Equation

Equation

手动处理下,每个点都能表示成 x1±wx_1\pm w 的形式,可以 dfs 一遍预处理符号

修改操作是是一个子树的修改,查询只要知道 ww 和符号就能解方程

没开 long long 挂大分

code

D.Rectangle

Rectangle

暂咕

code

2021.08.23

A.xor

xor

先前缀异或一下转化成区间内两个点最大异或值

考虑大力分块,prei,jpre_{i,j} 表示块 ii ,第 jj 位前缀最大两点异或值

用可持久化 Trie 找即可

O((n+q)nlogw)O((n+q)\sqrt n\log w)

code

B.magic

magic

字符集巨大的 AC 自动机

考虑 AC 自动机建立 fail 指针的过程,是要继承自 fail 的转移边,如果字符集很大暴力扫是不可取的,但是继承这个操作可以想到可持久化数据结构,用主席树就可以很好的维护树上的继承关系

主席树太不熟练了,写挂了调到考完

code

C.strGame

strGame

类似SG,但是多局之间有影响,考虑多分些状态表示必胜,必败,能控制必胜必败和被控制

Trie 上 dfs 求出状态

如果是必胜那么只能赢奇数轮,能控制必胜必败就一定能赢

否则必败

code

D.神秘数问题

被粉碎的数字