
- n≤1e12,T≤1e6,1s
- 设二者答案为 fi,gi,对于 fi 我们的策略是先把 i−1 个移动到第 3 个,再把当前移动一步,再把那 i−1 个移两步,那么就有 fi=2∗gi+1
对于 gi 我们的策略是先把 i−1 移动到第 3 个,再把当前移动一步,再把 i−1 向后移一步,把当前移一步,最后把 i−1 移两步,那么有 gi=gi−1+1+fi−1+1+gi−1
可以矩阵乘法,但直接矩阵乘会超时,于是考虑 bsgs,xn=(xB)⌊Bn⌋∗xn%B,预处理过后就可以快速计算,算 (A∗B)∗v 的时候按 A∗(B∗v) 只需要 18 次乘法,而原本需要 36 次
Code

- n,m≤5000
- 就是把 n 个数填到 gcd(k,n) 个环中,最大化相邻边的乘积,可以贪心将次大和次次大填到最大的两边,然后向两头扩展,复杂度可以做到 O(nσ0(n)),Code

- n≤1e5
- 考场觉得细节有点多就只打了 70 分暴力,暴力的话求一个区间的答案可以暴力枚举每一个区间对它的贡献,分 l,r 的范围讨论,正解也不难想,考虑一个区间 i 对所有区间 j 的贡献就可以,大概分类下面几类:
rj≤li,有 1 的贡献
li≤lj,rj≤ri,有 leniri−rj+leni0.5∗lenj 的贡献
lj≤li,ri≤rj,有 lenjli−lj+lenj0.5∗leni 的贡献,但是会把 li=lj,ri=rj 的算重,减掉即可
li<lj<ri,ri<rj,有 0.5∗lenilenj(ri−lj)2 的贡献
li>lj,li<rj<ri,有 1−0.5∗lenilenj(rj−li)2 的贡献
所以我们需要维护 rj,lenj1,lenj,lenjlj,lenjrj,lenjlj2,lenjrj2 及常数项的系数,那么就是矩阵加单点求值,常数过大写了个 bit 拯救一下,复杂度 O(nlog(n))
Code
相关文章:
-
2021-07-18
-
2021-10-26
-
2021-12-13
-
2021-11-21
-
2021-06-11
-
2021-12-22
-
2021-11-30
猜你喜欢
-
2022-03-03
-
2022-03-03
-
2021-09-01
-
2021-06-29
-
2022-01-21
-
2021-11-28
-
2021-12-04
相关资源
-
下载
2022-12-02
-
下载
2022-12-30
-
下载
2023-02-25
-
下载
2021-06-26
-
下载
2023-03-23