$\%\ nicodafagood$ .
$quadratic$
- 给 $n$ 个二次项系数为 $1$ 的二次函数,分别求 $x=1\sim n$ 时这 $n$ 个函数中的最小值. $n\leq 10^5$ .
- 因为二次项贡献固定,所以只需要算一次项和常数项的贡献,就相当于 $n$ 条直线在某个位置的最小值.
- 用凸包或者李超线段树写一下就好了.
1 |
|
$equation$
- 给定 $a,b,p,x$ ,求解 $[1,x]$ 中,满足 $n\cdot a^n\equiv b \mod p$ 的 $n$ 的数目.
- $0\leq a,b<p\leq 10^6.x\leq 10^{12}.$ 保证 $p$ 为质数.
- 根据费马小定理,指数可以对 $p-1$ 取模.而 $p$ 的范围比较小,于是直接枚举 $n$ 对 $p-1$ 取模的结果 $i$.
- 即,在 $[0,p-2]$ 内枚举 $i$ ,对应贡献为满足下面两个条件的 $n$ 的数目.
$$
n\equiv i (mod\ p-1),n\equiv b\cdot a^{-i}(mod\ p)
$$
- 用 $CRT$ 求解 $p\cdot (p-1)$ 内的 $n$ ,再计算 $[1,x]$ 内对应 $n$ 数目即可.
- 时间复杂度 $O(p\cdot logp)$ .
$datastructure$
- 给定一个长度为 $n$ 的正整数数列 $a$ ,要求支持下列操作,共 $m$ 次.
- 将区间 $[l,r]$ 内的元素加上 $x$ .
- 将区间 $[l,r]$ 内的元素开平方,向下取整.
- 询问区间 $[l,r]$ 内的元素平方总和.
- 询问区间 $[l,r]$ 内的元素总和.
- $n,m\leq 10^5,1\leq a_i,x\leq 10^9$ .
- 考虑用线段树维护询问的答案.
- 有一档部分分是没有操作 $1$ 的,可以直接做,对每个区间记录元素是否都是 $1$ ,开方时讨论即可.
- 正解做法类似,不过优化的方法不同.开方 $[l,r]$ 时,先询问 $[l,r]$ 内的最大值 $a$ 与最小值 $b$ .
- 开方时都向下取整,若 $\sqrt {a}=\sqrt {b}$ ,就将这个区间全部修改为 $\sqrt a$ .若 $a-\sqrt a=b-\sqrt b$ ,就给这个区间全部减去 $a-\sqrt a$ ,因为这个差是关于元素大小不下降的.
- 若两种情况都不满足,就暴力修改区间内所有元素.
- 因为一次区间加最多会使得 $logn$ 个结点的 $a-b$ 变化,而变化后我们最多暴力开 $6$ 次方它就变成 $1$ 了,所以操作 $1,2$ 复杂度均摊下来,一次为 $O(logn)$ .于是总时间复杂度 $O(nlogn)$ .
$unsigned\ long\ long$ 输出指令是 $\%llu$ .考试写成 $\%u$ 了. $70\to 15$ .