SDOI二轮省集

Day1

T1

打出 n2 dp,找到规律,直接计算。

可以用导数证明公式

T2

T3

愚蠢的在线法官

我会 n3

Aa,b=flca(a,b)Aa,b=wx[a|x][b|x]

wx 可以树上差分由 fx 得到。

一个点对矩阵的 i[l,r],j[l,r]l,r 是子树 dfn 序)有矩阵加,矩阵上二维差分不影响行列式,所以变成了四个单点加,发现是矩阵树的形式。

转化为求 l,r+1 间连边的生成树数量,用广义串并联图求生成树的方法求生成树得到矩阵的行列式。

匹配计数

对每一个颜色赋一个权值,要求 3 变成了要求有偶数个逆序对,于是对每对逆序对连边,要求导出子图的边数为偶数。

要求 2 则利用“偶减奇”的套路,对每种颜色额外连一个源点,若颜色数为偶数则会贡献翻倍,否则贡献为 0

把边写成邻接矩阵的形式,用 bitset 进行消元计算边数偶数的导出子图,复杂度 O(n3w)

Day2

T1

(at(p1)+1k)k=a

所以 x=at(p1)+1k,令 tp1 在模 k 意义下的逆元,得到答案。

也可以算 k 在模 p1 意义下的逆元。

T2

四毛子科技。

把每个序列分成大小为 B 的块,记录每个块的超集有谁,那么答案就是所有块的超集的与,可以用 bitset 优化,复杂度 O(nnBnw)

每个块内的超集怎么求呢?暴力枚举集合即可,把集合中的数的超集与起来,复杂度 O(nB2Bnw)

T3

转啊转啊转(bzoj4634)

Day3

T1

k=1 时可以 O(nk) 找规律前缀和递推,k=2 时答案为 1

k>2 时,求 k 不被染色的概率,用 1 减去,k1,k 被选中时一定不合法,不需要管。

把染色操作看做随机排列,从前往后能染就染。剩下的染色操作分为两部分,左半边和右半边不互相影响,发现左边的概率就是 1 减去 i=k 时的概率,右边的概率就是 1 减去 i=nk+1 时的概率,因为是概率,两边可以直接乘起来。

T2

要孤立点尽量少的前提下二度点尽量少,给每个点连两条边,一条的费用是 ,另一条的费用是 1,跑最小费用最大流。

边权只有 2+1 两种,模拟费用流,先跑第一种,再跑第二种,用 dinic 可以做到 O(nm)

T3

QOJ4549

Day4

T1

T2

T3

Day5

T1

首先距离有最大值和最小值,此外还有奇偶性的要求。

这三个条件是充要的,考虑怎么删障碍是合法的。对于每个中间联通块,随意选择中心,优先删最远的的障碍,发现一定合法,并且对答案的贡献是 20。连在边界上的联通块则可以把整个边界看做中心,还是优先删最远的。

预处理处删除序列,二分答案,时间复杂度 O(RClog(RC))

T2

T3

Day6

T1

贪心,优先选没被覆盖的 lca 深度最大的链,覆盖它的 lca,并且把被覆盖的链删掉,树剖 + 树状数组 O(nlog2n)

差分为子树修改单点查询,复杂度 O(nlogn)

T2

倒序枚举点,设 fi,j,k 表示点数为 i,连通块个数为 j,还需要接一个点的二度点数为 k

0 出度点可以作为新的连通块,或者接到二度点上,两种情况。

1 出度点要连一个已有的连通块,同时可以接到二度点上,两种情况。

2 出度点可以连两个已有的连通块,连一个已有的连通块,同时也可以接到二度点上,四种情况。

T3

考虑 i=1m(mi)f(i) 的组合意义,指的是在 m 个点中选 i 个点激活的贡献,从左到右枚举,每个点有两种状态,激活或者不激活。

a 前面可以接 a,b,cb 前面可以接 b,cc 前面可以接 a,b,c

写出递推式,发现可以矩阵快速幂加速递推,时间复杂度 O(Tlogm)

[省选联考 2023] 人员调度

带删除一眼鉴定为线段树分治,所以考虑只加入怎么办。

假设刚开始每个位置上都有一个贡献为 0 的人,对于一个新加入的人,如果更优,他可以换掉子树中最小的人,然后那个人再换掉他的子树中最小的人,直到打不过为止。

这样复杂度一定爆炸,所以我们抽象一下,假设是这一个人直接抢走了最后一个被踢走的人的位置,那么就是向上找到第一个子树中所有员工没有来自子树外的,换掉这个子树中的最小值,同时要记住这个人原来来自哪里,便于进行撤销操作。

换人和找点都可以用树剖 + 线段树来维护,时间复杂度 O(nlog3n)

Day7

T1

根据生日悖论,我们只要有足够多的树就大概率能凑出答案。

看样例,发现 26 的父亲一直是 1,想到把一棵树拆成两半,这样枚举树的效率会更高,用 unordered_map 存下第一棵树的值,用第二棵树的值加上两边的贡献去找答案。

T2

扩展一下哥德巴赫猜想,所有大于 8 的偶数都能被拆成两个不同质数的和。

选择两个质数,用小的不断加,然后用大的减,因为两个质数互质,剩余系能取到所有的数。

n 是奇数也简单,由于是一个成环的剩余系,最后一步一定还能跳到 1,而 n+11 本质相同,所以一定也能跳到。

T3

arc161e

比较神仙。

考虑不合法的状态比较多,可以打表看出来(也可以看题解),想到随机答案,然后 check 是否合法。

由于是黑白染色,想到 2-SAT,不好直接搜,把每个点拆成黑白点,按照支配条件连边,然后缩点,如果同一个点的黑白点在同一个联通块里,那么成功找到不合法的。

输出 1 就是骗人的。

[JOISC 2023 Day3] Tourism

回滚莫队 + 虚树 + O(1) lca 强行三合一

Day8

T1

先把所有已经匹配的数删掉,然后剩下 4 种数,确定的 1,不确定的 1,确定的 1,不确定的 1

dp 式子好推,但是注意不确定的 1 和不确定的 1 之间的匹配要乘上额外系数,总共是一个阶乘。

T2

显然 D=L2,考虑计数。

先做直径为偶数的情况,给每个点一个点权,有 uvwvwu=1,固定一个点权值为 0 则点权与方案形成双射,发现 d(u,v)=(dist(u,v)+wuwv)/2,移项可得 |wuwv|Ldist(u,v)

令距离中心 mD 的点权值为 0,则 |wu|Ddist(u,m),可以直接树上 dp。

如果直径为奇数,找到两个中心 m1,m2,对 m1m2 分别做 dp。因为可能有交集,向上和下分别压 1 的边界,减去交的部分,得到答案。

T3

[省选联考 2022] 卡牌

没见过的套路。

显然不能多项式做法,发现值域比较小,可能与状压有关。

然后就没有思路了,看题解发现可以根号分治,对于小质数状压,不可能同时出现的大质数控制的数相互独立,所以可以分别计算,容斥一下,钦定不能出现某些小质数,对于每个大质数来说是好算的,乘起来就好。

[Cnoi2019]人形演舞

第一眼看出来是公平博弈,所以一定与 SG 函数有关,打一个表,发现 i 的 SG 函数是 ihighbiti+1

然后考虑怎么计算答案,每一个位置的贡献是一样的,并且转移方式是异或卷积,所以记录 SG 函数为 i 的数有多少,然后 FWT,对于每个数快速幂,最后 IFWT,记得费马小定理降幂。

[JOI Open 2022] 放学路(School Road)

神仙题,计算有没有距离为非最短路的从 1n 的路径

首先发现如果有一个不同时包含 1n 的点双是一定不会走进去的,所以想办法找到有用的点,在 1n 之间再连一条边,就可以通过点双找到有用的点。

在新图中,一度点显然无用,二度点只有一种走法,可以缩成一条边,长度相同的重边和一条边的作用是一样的,缩成一条边就可以了,两条不相同的重边对答案有贡献,变成一条有标记的边。

最后答案是 0 当且仅当 1n 之间只有一条没有标记的边,说明不管怎么缩都是唯一路径,否则一定有其他方案,可以画一个四个点的图验证一下。

Day9

T1

树上 dp,转边权为点权,设 fi,0/1 为第 i 个点颜色是 0/1 的方案,转移时要继承一个同色儿子,其他儿子的贡献是深度乘积,并且两个子树拼起来的贡献是简单组合数,最后再乘上点权。

T2

对于每个起点,显然只有 O(logV) 个转折点,总共有 O(nlogV) 个转折点,对于一次询问的每个起点,人会在区间中每个转折点掉头,然后直到下一个转折点在区间外,走到区间端点后回头,直到另一个端点。

首先考虑怎么找到所有转折点,假设现在找右边的转折点,并且我们已经知道上一个转折点 x 和上上个转折点 y 在哪里,那么找到在 y 右边并且距离 x 小于等于指定距离的点 z。移项,不等式一边留下与 z 相关的值,用 st 表预处理,二分找到转折点。

接着考虑怎么计算答案,记录每个关键点会作为哪些区间的左端点之外的点,会作为哪些区间的右端点之外的点,会是哪些区间中的转折点。由于对左端点和右端点都有要求,所以相当于一个二维数点。贡献可以简单算。

T3

强行状压肯定行不通,考虑怎么精简状态。

由于只关心 xr 的相对关系,考虑记录 xr 的 lcp j,以及 lcp 后面的 popcount k,转移分四种。

操作是加,并且 k 的 popcount 没满,会导致 k 加一。

操作是加,并且 k 的 popcount 满了,会导致 lcp 变短,可以预处理。

操作是减,并且 k 大于 1,会导致 k 减一。

操作是减,并且 k 等于 1,可能会导致 lcp 变长,可以预处理。

操作是减,并且 k 等于 0,可能会导致 lcp 变短,可以预处理。

因为是多点询问,前后 dp 预处理,然后把前后拼起来就行了。

[EGOI2022] Lego Wall / 乐高墙

n×m5×105,考虑根号分治。

算法一:设 fi,j 为枚举到 ii1j1×2 的左半边,枚举 ik1×2 的左半边,组合数转移,复杂度 O(nm2)

算法二:容斥,设 him×i 填满的方案数,每行独立,是斐波那契数列,乘起来即可。gim×i 是一个联通块的方案数,钦定最后一个联通块是 j+1,i 之间,贡献是 gij×hj,用 hi 减去即可。

Conference Problem

Density of subarrays

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