【题解】2022年第四场寒假集训营题解
【题解】2022年第五场寒假集训营题解
【题解】2022牛客寒假算法基础集训营6
子序列权值乘积
思路:排序然后枚举 i i i 维护前缀中的信息即可。注意有坑:这道题要处理 2 k ( k ≤ 2 × 1 0 5 ) 2^k(k\leq 2\times 10^5) 2k(k≤2×105) ,因此需要使用到拓展欧拉定理。p是偶数,且 n < q n<q n<q ,可以保证 gcd ( n , q ) = 1 \gcd(n,q)=1 gcd(n,q)=1 。因此指数要模 p − 1 p-1 p−1 。
AC代码:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=68935436
在这冷漠的世界里光光哭哭
思路:容斥乱炖。思路太麻烦了见题解。
AC代码:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=68946163
造梦小孩
思路:根号分治。 a + k × l e n a+k\times len a+k×len 加数:
- 对于 l e n ≥ b l o c k c n t len\geq block_{cnt} len≥blockcnt ,用分块暴力加即可。
- 对于 l e n < b l o c k c n t len< block_{cnt} len<blockcnt ,加入到lazy数组中, l a z y ( l e n , i ) lazy(len, i) lazy(len,i) ,对第二维进行前缀和。
对lazy进行区间查询的话,和智乃的模数方程类似:因为是循环,所以可以加速处理。
数组划分
思路:问以 l l l 为左端点,右端点的最大值。即找到第一个 j j j 使得 p r e i − 1 > p r e j pre_{i-1}>pre_j prei−1>prej。
接下来我的思路是单调栈处理,然后连边建树,不断倍增。时间空间都是 O ( n log n ) O(n\log n) O(nlogn) ,空间会炸。
因为数组分割有连续性,跳父亲也有连续性,可以直接在单调栈上二分。