408566: GYM103186 I 对线

Memory Limit:1024 MB Time Limit:0 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

I. 对线time limit per test12.0 smemory limit per test1024 megabytesinputstandard inputoutputstandard output

ACPC 是一个新出的对线的战场,在这个战场每一方各有三道兵线,作为其中一方的你需要实时观察并调配自己的兵线以维持局势。 具体的,你有三排兵线,长度均为 $$$n$$$ ,每排兵线的位置从左往右编号依次从 $$$1$$$ 到 $$$n$$$ ,各排同编号的位置对齐。为实时观察和调配兵线,你需要以下完成四件事情。

  • 0、数出第 $$$x$$$ 排从 $$$l$$$ 位置到 $$$r$$$ 位置间所有的士兵数。
  • 1、往第 $$$x$$$ 排从 $$$l$$$ 位置到 $$$r$$$ 位置间所有位置各增派 $$$y$$$ 名士兵。
  • 2、将第 $$$x$$$ 排和第 $$$y$$$ 排兵线的同编号位置上的士兵进行交换位置。
  • 3、你发现你的士兵会分身术,命令第 $$$x$$$ 排从 $$$l$$$ 位置到 $$$r$$$ 位置所有士兵引导分身术,并将分身派往第 $$$y$$$ 排,每个分身前往与当前编号相同的位置。

开始时,每个位置上都没有士兵。只要实时对兵线完成上述的观察和调配,ACPC 战场就可以保持稳定,稳定才有利于发展!

由于答案可能过大,你只需要输出答案对 $$$998244353$$$ 取模后的结果。

Input

第一行有两个整数 $$$n, q$$$ $$$(1\leq n,q \leq3\times10^5)$$$,分别表示兵线的长度和事件的数量。

接下来 $$$q$$$ 行,每行第一个整数 $$$op$$$ 代表事件的类型。

  • 如果 $$$op$$$ 为 $$$0$$$ ,接下来会有三个整数 $$$x$$$ , $$$l$$$ , $$$r$$$ $$$(x\in\{1,2,3\}, 1\leq l\leq r \leq n)$$$ 代表你要数出第 $$$x$$$ 排从 $$$l$$$ 位置到 $$$r$$$ 位置间所有的士兵数。
  • 如果 $$$op$$$ 为 $$$1$$$ ,接下来会有四个整数 $$$x$$$ , $$$l$$$ , $$$r$$$ , $$$y$$$ $$$(x\in\{1,2,3\}, 1\leq l\leq r \leq n, 1\leq y \leq 10^9)$$$ 代表你要往第 $$$x$$$ 排从 $$$l$$$ 位置到 $$$r$$$ 位置间所有位置各增派 $$$y$$$ 名士兵。
  • 如果 $$$op$$$ 为 $$$2$$$ ,接下来会有四个整数 $$$x$$$ , $$$y$$$ , $$$l$$$ , $$$r$$$ $$$(x,y\in\{1,2,3\}, 1\leq l\leq r \leq n)$$$ 代表你要将第 $$$x$$$ 排和第 $$$y$$$ 排兵线的同编号位置上的士兵进行交换位置。
  • 如果 $$$op$$$ 为 $$$3$$$ ,接下来会有四个整数 $$$x$$$ , $$$y$$$ , $$$l$$$ , $$$r$$$ $$$(x,y\in\{1,2,3\}, 1\leq l\leq r \leq n)$$$ 代表你要命令第 $$$x$$$ 排从 $$$l$$$ 位置到 $$$r$$$ 位置所有士兵引导分身术,并将分身派往第 $$$y$$$ 排,每个分身前往与当前编号相同的位置。
Output

对于每个 $$$op$$$ 为 $$$0$$$ 的事件,在一行输出一个整数表示数出来的士兵数对 $$$998244353$$$ 取模后的结果。

ExampleInput
5 8
1 1 1 3 1
1 2 3 5 2
1 3 2 4 3
2 2 1 2 4
3 3 1 3 5
0 1 1 3
0 2 2 4
0 3 3 5
Output
6
2
6

加入题单

算法标签: