维 护 序 列 维护序列 维护序列
题目链接:luogu 2023
题目
老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为N的数列,不妨设为a1,a2,…,aN 。有如下三种操作形式:
- 把数列中的一段数全部乘一个值;
- 把数列中的一段数全部加一个值;
- 询问数列中的一段数的和,由于答案可能很大,你只需输出这个数模P的值。
输入
第一行两个整数 N N N和 P P P。
第二行含有 N N N个非负整数,从左到右依次为 a 1 , a 2 … … a N a1,a2……aN a1,a2……aN。
第三行有一个整数 M M M,表示操作总数。
从第四行开始每行描述一个操作,输入的操作有以下三种形式:
操作 1 1 1: “ 1 “1 “1 t t t g g g c ” c” c”(不含双引号)。表示把所有满足 t ≤ i ≤ g t≤i≤g t≤i≤g的 a i ai ai改为 a i × c ai×c ai×c。
操作 2 2 2: “ 2 “2 “2 t t t g g g c ” c” c”(不含双引号)。表示把所有满足 t ≤ i ≤ g t≤i≤g t≤i≤g的 a i ai ai改为 a i + c ai+c ai+c。
操作 3 3 3: “ 3 “3 “3 t t t g ” g” g”(不含双引号)。询问所有满足 t ≤