2024.7.20 test

A

你要求 \([L,R]\) 里面有多少数 \(x\) 满足 \(x\) 十进制下数码的种类数为 \(A\)\(L\le R\le 10^{2\times 10^5}\)

如果我们直接数位 dp,状态多记一维表示当前出现的数码种类集合,会导致超时且超空间。
我们发现如果没有最高位限制,即随便填 \(m\) 个数,满足出现的种类为 \(A\),这个是可以直接容斥算的。
我们不妨枚举第一个没有前导零,没有最高位限制的位置,分别计算即可。

B

维护一个序列,支持单点修改,查询:拿出区间里的所有数,查询能组成三角形的三个数的和最大值。
\(n\le 2e5,A_i\le 5e8\)

我们想已知一个集合,求三角形的三个数的和最大值,先从大到小排序。
我们发现,组成三角形一定是相邻的三个数,因为如果相邻数不能那么不相邻更不能了。
注意到我们只需从大到小扫 \(44\) 次就一定有答案,因为最坏情况是斐波那契,相邻三个都非法。
所以我们数据结构区间前 \(44\) 大即可,常数小是分块,或者写线段树,每个节点维护前 \(44\) 大即可。

C

给定 \(m\) 个集合 \(s_i\),对于集合 \(T\subseteq \{1,2,3,...,n\}\),定义 \(f(T)\) 为满足 \(|s_i\cap T|\ge k\)\(s_i\) 个数。
对于 \(p\in [1,m]\),求满足 \(f(T)\ge p\) 的最小的 \(|T|\)\(k\le n\le 24,m\le 3e5,|s_i|\ge k\)

D

无向连通图,经过一条边后边就会裂开,修复需要 \(w_i\)。求所有 \(i\to j\) 最短路径 \(\le K\) 的有多少条。

edcc 缩点+点分树。

posted @ 2024-07-22 14:38  s1monG  阅读(5)  评论(0编辑  收藏  举报