T1
题目大意
求\(\sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\%998244253,n\le 10^{10}\)
sol
\[ \sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\\ =\sum_{k=1}^n\sum_{i=1}^n\sum_{j=1}^n\mu(k)[gcd(i,j)=k]\\ =\sum_{k=1}^n\mu(k)\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{k}\rfloor}[gcd(i,j)=1]\\ =\sum_{k=1}^n\mu(k)\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{d|i\&d|j}\mu(d)\\ =\sum_{k=1}^n\mu(k)\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{kd}\rfloor}\\ 令sum(x)=\sum_{i=1}^n1\\ 则原式=\sum_{k=1}^n\mu(k)\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)sum({\lfloor\frac{n}{kd}\rfloor})^2\\ 考虑枚举k\times d\\ 原式=\sum_{T=1}^n\sum_{d|T}\mu(d)\mu(\frac{T}{d})sum({\lfloor\frac{n}{kd}\rfloor})^2\\ 令f(x)=\sum_{i|x}\mu(i)\mu(\frac{x}{i})=(\mu*\mu)\\ 原式=\sum_{T=1}^nf(T)sum(\lfloor\frac{n}{T}\rfloor)^2 \]
后面明显可以整除分块,问题变成了如何快速求\(f(x)\)的前缀和,题解说可以用杜教筛,可我就是不会筛\((\mu*\mu)\),只写出了线筛的分。
T2
题目大意
给定一个只包含小写字母的字符串 , 求其本质不同的子序列的个数,\(len \le 10^6,ans\)对\(998244353\)取模。
sol
我当时想了一个用tire树维护有多少个子序列,很明显方案数爆炸。
其实正解不需要任何数据结构,十分简单。
考虑递推,设f[i]为前i个字母组成的本质不同的子序列的个数。\(f[i]=2f[i-1]\)。但这会有很多重复的,设\(s_i\)为第i个字母,我们还需减去之前以\(s_i\)结尾的子序列的个数,这些都被重复算了一次。以\(s_i\)结尾的子序列的个数也可以递推,+=f[i]-f[i-1]就行,因为多产生了这么多贡献。
T3
题目大意
请你维护一个初始为空的点的集合,支持以下操作:
- A x y 加入点 (x,y)
- Q l r x y 询问点 (x,y) 与第 l 个 r 到个点的匹配度的最大值
点 (x,y) 与 (a,b) 的匹配度为 ax+by
sol
我只写了暴力。
正解把这个问题转为了几何问题,设 ax+by=k ,则 \(-\frac{x}{y}a+\frac{k}{y}=b\),问题变成了给一个斜率固定的直线,过区间内的一些点使截距最小。然后变成了我不会的线段树维护凸壳。